发现mysql服务器CPU占用率较高,而且从服务器上数据滞后主服务器很长时间。
从slow log文件中找到这样一条sql语句。
这个sql语句query_time达到了48.8秒,一个根据主键去更新的update语句居然耗时这么长。
查看执行计划,发现语句无法使用索引。
检查后发现主键_id字段是varchar类型,而语句中是long类型,发生了隐式类型转换,导致该语句无法使用主键索引,而必须走全表扫描(rows_examined:853805)的时候,全表扫描时是有表锁的(lock_time:46.41)。
在找到这个sql的来源,并修改成传递varchar类型后,再看执行计划,已经可以使用主键索引。
部署到主站后发现服务器CPU使用率下降,从服务器的数据滞后时长也变成了0秒。
数据类型隐式转换的小问题也能造成很大的影响。
来源:oschina
链接:https://my.oschina.net/u/1426212/blog/192205