个人经验总结:MySQL数据库优化技巧集锦(二)

2014-11-24 10:37:57 · 作者: · 浏览: 2
ySQL不使用C++扩展,不带扩展支持编译MySQL将赢得巨大的性能提高。

如果操作系统支持原生线程,使用原生线程(而不用mit-pthreads)。

用MySQL基准测试来测试最终的二进制代码。

十一、维护


如果可能,偶尔运行一下OPTIMIZE table,这对大量更新的变长行非常重要。

偶尔用myisamchk -a更新一下表中的键码分布统计。记住在做之前关掉MySQL。

如果有碎片文件,可能值得将所有文件复制到另一个磁盘上,清除原来的磁盘并拷回文件。

如果遇到问题,用myisamchk或CHECK table检查表。

用mysqladmin -i10 precesslist extended-status监控MySQL的状态。

用MySQL GUI客户程序,你可以在不同的窗口内监控进程列表和状态。

使用mysqladmin debug获得有关锁定和性能的信息。

十二、优化SQL


扬SQL之长,其它事情交由应用去做。使用SQL服务器来做:


找出基于WHERE子句的行。

JOIN表

GROUP BY

ORDER BY

DISTINCT

不要使用SQL来做:


检验数据(如日期)

成为一只计算器

技巧:


明智地使用键码。

键码适合搜索,但不适合索引列的插入/更新。

保持数据为数据库第三范式,但不要担心冗余信息或这如果你需要更快的速度,创建总结表。

在大表上不做GROUP BY,相反创建大表的总结表并查询它。

UPDATE table set count=count+1 where key_column=constant非常快。

对于大表,或许最好偶尔生成总结表而不是一直保持总结表。

充分利用INSERT的默认值。

十三、不同SQL服务器的速度差别(以秒计)


 


通过键码读取2000000行: NT Linux

mysql 367 249

mysql_odbc 464