前言:
今天各位老铁们对“mysql cpu飙升”都比较注重,兄弟们都想要了解一些“mysql cpu飙升”的相关知识。那么小编在网上搜集了一些对于“mysql cpu飙升””的相关资讯,希望兄弟们能喜欢,看官们一起来了解一下吧!概述
简单记录一下最近处理的生产环境MySQL服务器cpu飙升800%案例,处理还是比较简单的,仅供参考~
一、服务器CPU飙升800%触发告警
由于这里计算的是平均CPU,top表现为800%,触发zabbix告警如下:
二、检查数据库当前会话
show full processlist;三、查看执行计划
这是必备技能~
explain SELECT * FROM t_ocs_employee_attendace e WHERE e.employee_code LIKE concat( 'xxx', '%' ) AND DATE_FORMAT( e.work_date, '%Y-%m-%d' ) = DATE_FORMAT( '2020-08-26 00:00:00', '%Y-%m-%d' )
圆圈圈起来的地方是问题所在地
四、建索引并调整sql
考虑优化如下:
1、employee_code、work_date建联合索引
2、like 后面不直接跟%
3、左边的date_format函数去掉
--建索引create index idx_code_work on t_ocs_employee_attendace(employee_code,work_date)--调整sql如下:SELECT * FROM t_ocs_employee_attendace e where e.employee_code LIKE concat( '207082', '%' ) and e.work_date = DATE_FORMAT( '2019-04-07 00:00:00', '%Y-%m-%d')五、再次检查执行计划
可以发现走了索引范围扫描,代码修改对应xml文件后问题解决~
后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下~
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #mysql cpu飙升