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

发现mysql服务器CPU占用率较高,而且从服务器上数据滞后主服务器很长时间。

mysql优化--避免数据类型的隐式转换_第1张图片

从slow log文件中找到这样一条sql语句。

这个sql语句query_time达到了48.8秒,一个根据主键去更新的update语句居然耗时这么长。

查看执行计划,发现语句无法使用索引。

检查后发现主键_id字段是varchar类型,而语句中是long类型,发生了隐式类型转换,导致该语句无法使用主键索引,而必须走全表扫描(rows_examined:853805)的时候,全表扫描时是有表锁的(lock_time:46.41)。

在找到这个sql的来源,并修改成传递varchar类型后,再看执行计划,已经可以使用主键索引。

部署到主站后发现服务器CPU使用率下降,从服务器的数据滞后时长也变成了0秒。

 

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

你可能感兴趣的:(数据库优化,数据类型隐式转换)