myisam碎片太多引起的慢查询

有一个用户库共有550W左右的数据,查询次数一天约有100W次左右。为了防止慢查询,所以简单地分了256个表。

下面是表结构:

查询语句都是使用主键查询的:

SELECT * FROM t_sign_user_xx WHERE fusrid=xxx;
 

但是很奇怪,mysql的慢查询日志里,这个数据库里面的数据每天都会出现数百次慢查询记录。

查了很久都没查出原因。后来无意中想到对表进行优化是否会好点。于是对所有表执行了

OPTIMIZE TABLE  `t_sign_user_xx`

效果非常显著,机器的平均压力从原来的3~5下降到现在的1~2了,并且这个库再也没有出现过慢查询。

以前别人对我说,MyIsam表在经常删数据的情况下才需要优化。我这个表是没有删除操作的,只有SELECT、UPDATE、和INSERT操作,所以我忽略了表优化。看来只要有更新操作的MyIsam库,都应该隔一段时间优化一遍才行。

猜你喜欢

转载自yanglefeng.iteye.com/blog/1335786