news 2026/2/22 23:07:32

查看数据库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/2/21 6:39:35

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/2/9 3:50:15

抖音视频批量下载完整教程:轻松管理个人主页视频资源

抖音视频批量下载完整教程:轻松管理个人主页视频资源 【免费下载链接】douyinhelper 抖音批量下载助手 项目地址: https://gitcode.com/gh_mirrors/do/douyinhelper 还在为一个个手动保存抖音视频而烦恼吗?抖音视频批量下载工具正是为解决这一痛点…

作者头像 李华
网站建设 2026/2/10 12:13:50

WinDbg Preview下载安装详解:适用于内核调试场景

从零搭建内核调试环境:WinDbg Preview 实战指南 你有没有遇到过这样的场景?刚写完一个内核驱动,系统一加载就蓝屏重启,事件查看器里只留下一行冰冷的 IRQL_NOT_LESS_OR_EQUAL 。没有日志、没有堆栈、连崩溃发生在哪个函数都不知…

作者头像 李华
网站建设 2026/2/13 8:06:40

一文说清RS485两种工作模式的核心要点与区别

RS485半双工与全双工:工程师必须搞懂的通信模式差异 你有没有遇到过这样的场景?系统明明接线正确,Modbus读数却时好时坏;或者在调试伺服控制器时,发现指令响应总有延迟,查遍代码也找不到原因。很多时候&…

作者头像 李华
网站建设 2026/2/19 16:59:23

城通网盘直链提取完整教程:零基础实现极速下载方案

ctfileGet是一款专为城通网盘用户设计的开源工具,能够智能解析文件直链地址,帮助用户突破传统下载限制,实现高效便捷的文件下载体验。无论你是技术小白还是资深用户,这款工具都能为你带来全新的网盘使用感受。 【免费下载链接】ct…

作者头像 李华
网站建设 2026/2/22 23:39:14

WeMod专业版免费解锁终极指南:轻松获取高级游戏修改功能

WeMod专业版免费解锁终极指南:轻松获取高级游戏修改功能 【免费下载链接】Wemod-Patcher WeMod patcher allows you to get some WeMod Pro features absolutely free 项目地址: https://gitcode.com/gh_mirrors/we/Wemod-Patcher 🎮 你还在为WeM…

作者头像 李华