MyISAM引擎为什么会出现坏表

0 条评论

很多人都遇到过MyISAM坏表,而有的人却会经常遇到,其实这是有原因的。

MyISAM引擎坏表一般是因为这几个原因引起的:

1、在联机状态下直接kill mysql进程。

2、在联机状态下直接对mysql的数据库文件进行操作。很多人就是这样备份的。

3、在联系状态下直接用myisamchk修复表。

2011年09月06日阅读全文

MySQL获取数据行数的问题

0 条评论

在MySQL中,获取数据行数是一个比较常用的操作,基本上任何的应用都会用到。

SELECT COUNT(*) FROM TALBE;这是一个不能再熟悉的SQL。

当执行这个SQL时,MyISAM引擎的表会直接读取行数然后返回,速度很快;而InnoDB就会比较杯具,它会执行一次全表扫描。

2011年09月06日阅读全文

MyISAM和InnoDB在锁表上的区别

0 条评论

MyISAM和InnoDB的区别很多,方面很多,不是一两段话可以说得清,这里只说表锁定上的区别。

MyISAM采用的是表锁定,当要更新表中的一列时也要锁定整个表。

InnoDB采用的是记录锁,只会锁定当前操作的行,写频繁的应用中用InnoDB会有很大的优势。

另外MyISAM写操作的优先级高于读操作,如果写压力很大的话,读操作会等到心碎。

虽然如此,但MyISAM是一个高优化的引擎,在读为主的应用中优势还是很大的。

2011年09月06日阅读全文

PHP读取MySQL乱码

0 条评论

用PHP去读取MySQL数据库将显示,结果网页乱码。

这是因为网页跟数据库编码不一样导致的。

可以在查询数据前先执行mysql_query("SET NAMES 'utf8'");

其中utf8是数据库内容的编码。

2011年09月05日阅读全文

mysql错误,Table './xxx/xxx' i...

0 条评论

Table './xxx/xxx' is marked as crashed and should be repaired的意思是某表已经损坏需要修复。

修复方法如下:

1. 首先要停止所有连接,比如是网站的就先把网站暂停了,正在用的表是不能正常修复的。

2. 进行mysql,可以是命令行的,也可以是phpmyadmin等,执行sql: repair table xxx;

一般来说这样就可以修复了,但有的时候可能索引也损坏了,那就还需要执行以下的操作:

3. 退出刚才的命令行或者phpmyadmin,进行linux的终端或者windows的cmd,切换到数据库所在的目录,执行:/mysql程序所在的路径/bin/myisamchk -c -r xxx.MYI,当然如果mysql bin已经放入了path中就可以直接myisamchk -c -r xxx.MYI。

折腾到这里一般都修复了。

2011年09月02日阅读全文

nginx的fastcgi_cache和proxy_c...

0 条评论

nginx不仅有个大家很熟悉的缓存代理后端内容的proxy_cache,还有个被很多人忽视的fastcgi_cache。

proxy_cache的作用是缓存后端服务器的内容,可能是任何内容,包括静态的和动态。

fastcgi_cache的作用是缓存fastcgi生成的内容,很多情况是php生成的动态的内容。

proxy_cache缓存减少了nginx与后端通信的次数,节省了传输时间和后端宽带。

fastcgi_cache缓存减少了nginx与php的通信的次数,更减轻了php和数据库(mysql)的压力,这比用memcached之类的缓存要轻松得多。

proxy_cache和fastcgi_cache可以在一个应用中同时使用,如果都用得着的话。

2011年08月31日阅读全文

mysql权限应该如何设置

0 条评论

mysql必须要设置了正确的权限才能启动。

数据库也就是datadir的权限分配如下:

datadir的所有上级目录至少要有x权限,datadir目录包括子目录要全部权限,所有文件要有请填写权限。

假如datadir=/data/mysql,那么

/data 目录 所有者随便,权限一般 0755

/data/mysql 目录 所有者mysql,权限 0755 或者严格点 0700。

/data/mysql/* 目录 所有者mysql,权限 0755 或者严格点 0700。

/data/mysql/目录/* 文件 所有者 mysql,权限 0644 或者严格点 0600。

2011年08月31日阅读全文

ubuntu修改mysql数据库路径的方法

0 条评论

ubuntu的mysql默认数据库存放路径是/var/lib/mysql,如果要修改这个路径,方法如下:

1. mv /var/lib/mysql /data/

2. 一般来说,mv之后权限是保持的,但可以修改确保无误。 chown -R mysql:mysql /data/mysql

3. vi /etc/mysql/my.cnf 把 datadir 那行改为 datadir = /data/mysql

4. vi /etc/apparmor.d/usr.sbin.mysqld

/var/lib/mysql r,

/var/lib/mysql/** rwk,

中的 /var/lib/mysql 改为新的路径,也就是 /data/mysql

5. 重启服务

/etc/init.d/apparmor restart

/etc/init.d/mysql restart

折腾完毕。

2011年08月31日阅读全文

mysql启动失败,Can't create/writ...

0 条评论

ubuntu下,mysql默认数据库存放路径是 /var/lib/mysq。

一直以来都由着它默认没管,可近来发现 /var 的空间不足了,而数据库是一直增长的,只好考虑转移一下。

于是移动了数据文件,修改了权限,修改了my.cnf,然后尝试启动,却发现无法启动起来。

查看错误日志文件,发现好像是权限的问题:

[Note] Plugin 'FEDERATED' is disabled.

/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)

[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

[ERROR] /usr/sbin/mysqld: Can't create/write to file '/data/mysql/zhetenga.com.pid' (Errcode: 13)

[ERROR] Can't start server: can't create PID file: Permission denied

于是我再检查了权限,发现权限不应该有任何问题的,但仍然无法启动,好奇怪。

最后 baidu google了无数次后终于得到了答案,原来是ubuntu下的 apparmor 搞的。

最后通过以下修改终于让mysql启动成功了。

vi /etc/apparmor.d/usr.sbin.mysqld

/var/lib/mysql r,

/var/lib/mysql/** rwk,

中的 /var/lib/mysql 修改为新的路径。

一直以来用 centos 也出现过类似的错误,都是目录或文件的权限问题,而ubuntu除了目录和文件权限外,还有这个配置文件要改。

真折腾!

2011年08月31日阅读全文

linux下unix时间快速转换显示

0 条评论

UNIX时间,或称POSIX时间是UNIX或类UNIX系统使用的时间表示方式,从协调世界时1970年1月1日0时0分0秒起至现在的总秒数,不包括闰秒。

一个UNIX时间如下:1314583003。这样的数字是看不出来实际是哪个时间的,这就需要将它转换为正常的时间表示显示。

在linux下,可以用date轻松快速地转换,命令:date -d @时间。

例如:date -d @1314583003,注意有个@符号。

2011年08月29日阅读全文
  1. «
  2. 1
  3. ...
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9
  11. 10
  12. 11
  13. 12
  14. 13
  15. 14
  16. 15
  17. 16
  18. 17
  19. »