分享一次mysql占用cpu过高分析


前几个月自己写了一个日志写入到mysql这几天来看天天cpu都是满载于是准备来调整一下

通过如下方式定位效率低的查询:
首先命令行登录到mysql然后
通过 show processlist; 或 show full processlist; 命令查看当前执行的查询,如下图所示:图片偷的我手上没现成的

查看当前执行的查询
对于查询时间长、运行状态(State 列)是“Sending data”、“Copying to tmp table”、“Copying to tmp table on disk”、“Sorting result”、“Using filesort”等都可能是有性能问题的查询(SQL)。

然后看看那条语句占用时间很长去解决就好了 我是因为LIKE '%xxx%'" 导致全表扫描 不执行这个魔鬼匹配就好了

第二个就是查询有没有走索引 如果不走索引就会导致全表扫描比如'%abc%'是不走索引的但是'abc%'和'%abc'是走索引的
EXPLAIN 这个命令可以查看有没有走索引 走了索引
实例

EXPLAIN SELECT * FROM `nginxlog` WHERE `source` LIKE '/link%'

返回

possible_keys就是走的索引

声明:小小博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 分享一次mysql占用cpu过高分析


Carpe Diem and Do what I like