news 2026/5/10 0:19:23

查看数据库mysql的慢查询

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
查看数据库mysql的慢查询

下面给出一个详细、可执行的成熟方案,用于查看并分析 MySQL 的慢查询。覆盖多种场景,便于在不同环境(自建 MySQL、云托管、只想最小化日志开销等)中选用合适的方法。

一、总体思路与推荐顺序

  • 优先使用 Performance Schema(实时、零磁盘开销,适合长期监控)或慢查询日志(离线深度分析,便于事后溯源)。
  • 结合 sys schema 提高可读性与分析效率。
  • 在需要临时排查或未开启慢查询日志时,合理使用通用查询日志(General Log)作为临时手段,但注意成本。
  • 对慢查询进行执行计划诊断,优先使用 EXPLAIN ANALYZE(MySQL 8.0+)。
  • 如在云环境/托管数据库,结合云厂商提供的慢查询与性能洞察工具。

二、方案 A:慢查询日志(Slow Query Log)— 离线分析的基础

  1. 启用与配置
  • 查看当前状态
    • SHOW GLOBAL VARIABLES LIKE 'slow_query_log%';
    • SHOW GLOBAL VARIABLES LIKE 'long_query_time';
  • 临时开启(重启后失效)
    • SET GLOBAL slow_query_log = 'ON';
    • SET GLOBAL long_query_time = 1; -- 设为 1 秒,可根据业务调整
    • SET GLOBAL log_queries_not_using_indexes = 'ON'; -- 记录未使用索引的查询
  • 持久化开启(推荐生产环境) 在 my.cnf / /etc/mysql/my.cnf 等配置文件中: [mysqld] slow_query_log = ON slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 1 log_queries_not_using_indexes = ON log_slow_admin_statements = ON # 如需要记录管理员操作的慢语句 保存并重启 MySQL: systemctl restart mysqld
  • 日志权限检查
    • ensure mysql 用户对日志文件有写权限
  1. 验证与查看慢查询日志
  • 实时查看慢查询日志
    • tail -f /var/log/mysql/mysql-slow.log
  • 解析日志(不依赖额外工具也能看到结论)
    • grep、awk 等简单筛选
  • 常用聚合分析工具
    • mysqldumpslow -s t -t 20 /var/log/mysql/mysql-slow.log # 按总耗时排序
    • mysqldumpslow -s c -t 20 /var/log/mysql/mysql-slow.log # 按执行次数排序
    • 也可用 pt-query-digest 进行更强大分析(Percona Toolkit)
  1. 使用 pt-query-digest(强烈推荐)
  • 安装:Percona Toolkit
  • 使用:
    • pt-query-digest /var/log/mysql/mysql-slow.log > /tmp/slow_report.txt
    • 报告包含:最耗时的查询、指纹、执行次数、平均耗时、EXPLAIN 样例等
  1. 结合 EXPLAIN 与 EXPLAIN ANALYZE
  • 对选中的慢查询,获取执行计划
    • EXPLAIN SELECT ...;
    • 在 MySQL 8.0+ 使用 EXPLAIN ANALYZE SELECT ...; 可以看到实际执行成本、逐步耗时
  • 依据计划进行索引优化、查询改写、统计信息更新等

三、方案 B:Performance Schema(实时慢查询监控,零磁盘开销) MySQL 5.6+ 都有 Performance Schema;8.0 版本体验更佳。

  1. 启用与配置
  • 确认相关开关状态
    • SELECT * FROM performance_schema.setup_consumers WHERE NAME LIKE '%statements%';
  • 启用语句相关消费记录(通常默认开启)
    • UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%statements%';
  • 启用 Digest 与 Instrument(若未默认开启)
    • UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE '%statement/%';
  • 注意:Performance Schema 的数据在内存中,重启后可清空,请结合 Sys schema 使用以便阅读
  1. 常用查询(慢查询聚合分析)
  • 按照摘要(digest)查看慢查询汇总
    • SELECT DIGEST_TEXT AS normalized_sql, SCHEMA_NAME AS schema_name, COUNT_STAR AS exec_count, SUM_TIMER_WAIT / 1000000000 AS total_seconds, AVG_TIMER_WAIT / 1000000000 AS avg_seconds, MAX_TIMER_WAIT / 1000000000 AS max_seconds FROM performance_schema.events_statements_summary_by_digest WHERE AVG_TIMER_WAIT > 1_000_000_000 -- > 1s 的阈值,可按需调整 ORDER BY AVG_TIMER_WAIT DESC LIMIT 20;
  • 查看最近一次较慢的语句(历史记录)
    • SELECT SQL_TEXT, TIMER_WAIT / 1000000000 AS duration_seconds FROM performance_schema.events_statements_history ORDER BY TIMER_WAIT DESC LIMIT 10;
  • 结合数据库、用户、表等过滤条件
    • 可用 DIGEST、DIGEST_TEXT、SCHEMA_NAME、DIGEST_TEXT 等字段结合过滤
  1. 实用要点
  • Performance Schema 数据默认是近实时的,适合持续监控与趋势分析
  • 数据量大时要注意对服务器性能的影响,必要时降低收集粒度或只开启必要的 instrumentation
  • 与 MySQL 8.0+ 的 EXPLAIN/EXPLAIN ANALYZE 结合,能快速找到瓶颈点
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 11:37:49

WarcraftHelper终极指南:一键解决魔兽争霸III卡顿与兼容性问题

WarcraftHelper终极指南:一键解决魔兽争霸III卡顿与兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸III在新系统…

作者头像 李华
网站建设 2026/5/8 18:57:37

如何给别人讲清楚一件事

今天给大家分享一个快速高效沟通的方法。日常作为测试人员,避免不了和各个项目相关方去沟通。要和开发去撕逼,要和BA沟通需求,要和开发去沟通是不是bug等内容,给其他人讲解需求。那么如何快速高效沟通一件事?分几种场景…

作者头像 李华
网站建设 2026/5/1 6:15:42

魔兽争霸III终极优化插件:一键解决兼容性问题

魔兽争霸III终极优化插件:一键解决兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典魔兽争霸III在现代系统上的各种bu…

作者头像 李华
网站建设 2026/5/3 17:42:44

3步搭建家庭游戏串流系统:Sunshine多设备并行配置终极指南

3步搭建家庭游戏串流系统:Sunshine多设备并行配置终极指南 【免费下载链接】Sunshine Sunshine: Sunshine是一个自托管的游戏流媒体服务器,支持通过Moonlight在各种设备上进行低延迟的游戏串流。 项目地址: https://gitcode.com/GitHub_Trending/su/Su…

作者头像 李华
网站建设 2026/5/1 8:52:36

WeMod Patcher实战手册:零门槛解锁专业级游戏修改功能

WeMod Patcher实战手册:零门槛解锁专业级游戏修改功能 【免费下载链接】Wemod-Patcher WeMod patcher allows you to get some WeMod Pro features absolutely free 项目地址: https://gitcode.com/gh_mirrors/we/Wemod-Patcher 还在为WeMod Pro的高昂订阅费…

作者头像 李华
网站建设 2026/5/1 8:48:25

手柄陀螺仪校准终极指南:从漂移到精准的完整教程

手柄陀螺仪校准终极指南:从漂移到精准的完整教程 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 你是否曾在游戏中因为手柄视角自动旋转而错失关键击杀?当你在《Ap…

作者头像 李华