问题描述:
最近有一台虚拟机CPU运行很高,平常超过50%,到有定时任务时,达到100%。
下图为CPU使用率 cpu utilization
原因分析:
进入到MySQL数据库,
使用查询命令:show processlist;
可以看到此时有很多sql语句正在运行,而且耗时主要集中显示 sending data 。
很有可能是词表没有使用索引,大量的sql语句运行慢且一直消耗cpu 。
进入数据库,查询此表的索引:show index from table_name;
看到结果果然是没有索引
解决方案:
为表的字段添加索引:
create index sss on table_name(zzz_name);
sss为自己随意起的索引名称,zzz_name为要添加的索引字段名称,table_name就是数据表
再次查看表中索引情况:
show index from table_name;
可以看到现在有两个索引了,一个是自带的ID一个是自己刚添加的索引sss
此时看一下cpu使用率 cpu utilization
立马就降了下来
另外删除索引命令:
ALTER TABLE table_name DROP INDEX sss;
查看表的字段结构情况:
DESC table_name;