mysql优化--避免数据类型的隐式转换

本秂侑毒 提交于 2020-04-15 09:09:49

【推荐阅读】微服务还能火多久?>>>

发现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秒。

 

数据类型隐式转换的小问题也能造成很大的影响。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!