mysql优化--避免数据类型的隐式转换
【推荐阅读】微服务还能火多久?>>> 发现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