有一个用户库共有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库,都应该隔一段时间优化一遍才行。