MySQL优化(二)服务器CPU占用率过高

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44104367/article/details/102531797

情景复原:做了个答题的应用,访问量不是很大,却出现了,服务器CPU占用率爆表的情况,在这里插入图片描述
于是开始请教大神,解决方法如下:
1.排查是否有io操作较大的,比如查询条数或者大字段读写
2.使用率较高的SQL进行优化。
3.用**show processlist;**查看所有连接。
现象sql执行状态为:sending data,copying to tmp table,copying to tmp table on disk,sorting result,using filesort,locked;就有问题了。
所有状态说明在mysql官网有http://dev.mysql.com/doc/refman/5.0/en/show-processlist.html
a.sending data:sql正从表中查询数据,如果查询条件没有适当索引,会导致sql执行时间过长
b.copying to tmp table on disk:因临时结果集太大,超过数据库规定的临时内存大小,需要拷贝临时结果集到磁盘上
c.sorting result,using filesort:sql正在执行排序操作,排序操作会引起较多的cpu消耗,可以通过添加索引,或
减小排序结果集
不同的实例规格iops能力不同,如,iops为150个,也就是每秒能够提供150次的随机磁盘io操作,所以如果用户的数据量
很大,内存很小,因iops的限制,一条慢sql就有可能消耗掉所有io资源,而影响其他sql查询,对于数据库就是所有的sql
需要执行很长时间才返回结果集,对于应用会造成整体响应变慢。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44104367/article/details/102531797