前几个月自己写了一个日志写入到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就是走的索引
Comments | NOTHING