mysql如何排查CPU占用

P粉602998670
发布: 2025-10-01 13:50:02
原创
717人浏览过
首先确认高CPU是否由MySQL引起,通过top观察mysqld进程;再用SHOW PROCESSLIST查看运行中的SQL,关注长时间运行或锁定状态的查询;开启慢查询日志并设置阈值,利用mysqldumpslow或pt-query-digest分析高频、耗时SQL;对问题SQL执行EXPLAIN检查全表扫描、缺失索引或临时排序等问题,针对性添加索引或重写;借助sys.schema视图监控语句性能;最后评估innodb_buffer_pool_size、max_connections等参数合理性,避免配置不当导致资源争用。

mysql如何排查cpu占用

MySQL出现CPU占用过高时,通常和慢查询、锁竞争、配置不合理或并发过大有关。排查需要从系统层到数据库层逐步分析,定位根源。

查看系统级CPU使用情况

先确认是否是MySQL进程导致的高CPU:

  • 使用tophtop
  • P键按CPU排序,观察mysql进程(mysqld)的CPU占用率
  • 若mysqld占比较高,基本可确定问题出在MySQL内部

检查MySQL当前运行的SQL

连接到MySQL,查看正在执行的请求:

SHOW PROCESSLIST;

重点关注:

  • 状态为RunningSending data且时间较长的查询
  • 大量处于Locked状态的语句,可能有锁等待
  • 重复出现的相同SQL,可能是高频低效查询

更详细信息可用:

SHOW FULL PROCESSLIST;

启用并分析慢查询日志

慢查询是CPU升高的常见原因。确保慢查询日志已开启:

SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
SET GLOBAL log_output = 'FILE';
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';

然后重现高负载场景,用mysqldumpslowpt-query-digest分析日志:

mysqldumpslow -s c -t 10 /var/log/mysql/slow.log

找出执行次数多、耗时长、扫描行数大的SQL重点优化。

简篇AI排版
简篇AI排版

AI排版工具,上传图文素材,秒出专业效果!

简篇AI排版 554
查看详情 简篇AI排版

检查索引和执行计划

对可疑SQL使用EXPLAIN分析执行计划:

EXPLAIN SELECT * FROM orders WHERE user_id = 123;

关注点:

  • type是否为ALL(全表扫描)
  • key是否为NULL(未走索引)
  • rows是否过大
  • Extra是否有Using filesortUsing temporary

根据结果添加索引或重写SQL。

监控系统性能指标

使用工具辅助判断:

  • innotop:实时查看MySQL线程、锁、事务等
  • performance_schema:启用后可查SQL执行统计
  • sys schema:提供更易读的性能视图,如host_summary_by_statement_latency
SELECT * FROM sys.statement_analysis ORDER BY avg_latency DESC LIMIT 5;

检查MySQL配置合理性

某些配置不当也会加重CPU负担:

  • innodb_buffer_pool_size过小,导致频繁磁盘读
  • query_cache_type开启但命中率低,反而增加开销(MySQL 8.0已移除)
  • max_connections过高,引发过多并发线程竞争

结合服务器内存和负载调整参数。

基本上就这些。关键是从活跃会话入手,结合慢日志和执行计划,找到“吃”CPU的SQL,再优化索引或逻辑。定期巡检能避免问题积累。

以上就是mysql如何排查CPU占用的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号