news 2026/4/9 10:55:08

查看数据库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/4/9 13:54:02

Sunshine终极配置:打造高效家庭游戏串流系统

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

作者头像 李华
网站建设 2026/4/8 8:51:12

Android 自定义 View :打造一个跟随滑动的丝滑指示器

在 Android 开发中,我们经常需要为 RecyclerView、ViewPager 或 HorizontalScrollView 添加一个可视化的滚动指示器。虽然系统自带的 ScrollBar 能满足基本需求,但如果 UI 设计要求指示器有固定的宽度、圆角以及特定的颜色,自定义 View 往往是…

作者头像 李华
网站建设 2026/4/8 18:30:11

文章仿写Prompt

文章仿写Prompt 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 文章基本信息 目标文章:《城通网盘解析工具:全新解析方案深度解析》 目标读者:技术爱好者和普通用户…

作者头像 李华
网站建设 2026/4/7 14:55:31

NCM文件解密神器:轻松搞定网易云音乐跨平台播放

还在为网易云音乐下载的NCM文件无法在其他播放器播放而烦恼吗?今天我要向你推荐一款超实用的NCM文件解密神器——ncmdumpGUI!这款工具能够快速将网易云音乐的专属加密格式转换为通用音频文件,让你的音乐收藏真正实现跨平台播放解决方案。 【免…

作者头像 李华
网站建设 2026/4/6 17:31:27

MouseTester终极指南:3步完成专业鼠标性能测试

MouseTester终极指南:3步完成专业鼠标性能测试 【免费下载链接】MouseTester 项目地址: https://gitcode.com/gh_mirrors/mo/MouseTester 想要精准评估鼠标性能?MouseTester开源测试工具为你提供专业级的鼠标性能分析方案。这款基于C#开发的轻量…

作者头像 李华
网站建设 2026/4/8 11:02:08

3种方法快速解决ComfyUI-VideoHelperSuite工作流加载异常问题

3种方法快速解决ComfyUI-VideoHelperSuite工作流加载异常问题 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 在处理视频工作流时,ComfyUI-VideoHelpe…

作者头像 李华