龙空技术网

MySQL 实战CPU 100%问题解决

瓜哇园 101

前言:

此时各位老铁们对“mysql占用cpu过高”大约比较注重,大家都想要了解一些“mysql占用cpu过高”的相关知识。那么小编也在网摘上收集了一些有关“mysql占用cpu过高””的相关资讯,希望姐妹们能喜欢,看官们快快来学习一下吧!

原理

笔者工作中数次遇到过mysql数据库实例超过100%这种情况,一般情况下都是因sql性能问题导致

原因 : 由慢sql造成,慢sql包括全表扫描,扫描数据量太大,内存排序,磁盘排序,锁争用等;

现象: sql执行状态为:sending data,copying to tmp table,copying to tmp table on disk,sorting result,using filesort,locked;

解决

登陆数据库,show processlist查看当前正在执行的sql,当执行完show processlist后出现大量语句

sending data: sql正从表中查询数据,如果查询条件没有适当索引,会导致sql执行时间过长copying to tmp table on disk: 因临时结果集太大,超过数据库规定的临时内存大小,需要拷贝临时结果集到磁盘上sorting result,using filesort: sql正在执行排序操作,排序操作会引起较多的cpu消耗,可以通过添加索引,或减小排序结果集不同的实例规格iops能力不同,如,iops为150个,也就是每秒能够提供150次的随机磁盘io操作,所以如果用户的数据量

很大,内存很小,因iops的限制,一条慢sql就有可能消耗掉所有io资源,而影响其他sql查询,对于数据库就是所有的sql

需要执行很长时间才返回结果集,对于应用会造成整体响应变慢。结语

分析SQL查询计划+慢查询SQL分析是很好的定位CPU高占用率问题的方法。大家在工作中如果遇到了类似的问题,可以结合以上各种情况对应检查与解决。

标签: #mysql占用cpu过高