场景描述
mysqld CPU开销 100%。
原因分析
1、通过top查询,确定是mysql进程CPU占用高,排除主机内其他进程的影响。
2、查看processlist。虽然无明显AP类查询,但有个select count(1) 的并发较高。
3、explain sql 查看执行计划,发现该sql采用全表扫描的方式。
解决方案
该SQL语句中有where uuid=$x的查询,为了避免进行全表扫描,可以为uuid增加索引。
上图加索引前,cpu的开销为200%。
sql:alter table t_xx_picture add index idx_uuid(uuid);
上图加索引后,cpu开销由200%降低至22.9%。