news 2026/9/27 17:11:04

查看数据库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/9/27 11:29:10

ncmdumpGUI:轻松解密网易云音乐加密文件的专业解决方案

ncmdumpGUI:轻松解密网易云音乐加密文件的专业解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经遇到过这样的情况:从…

作者头像 李华
网站建设 2026/9/27 3:33:46

ES在物联网实时数据场景中的部署方案

Elasticsearch 在物联网实时数据场景中的实战部署与优化你有没有遇到过这样的情况:成千上万台设备同时上报数据,后台系统刚撑了几个小时就开始“喘不过气”?查询延迟飙升、写入被拒、集群频繁告警……这在物联网(IoT)项…

作者头像 李华
网站建设 2026/9/26 11:06:08

城通网盘直链解析终极方案:3分钟实现高速下载的完整教程

城通网盘直链解析终极方案:3分钟实现高速下载的完整教程 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘的蜗牛下载速度而烦恼吗?每天面对漫长的等待时间&#xf…

作者头像 李华
网站建设 2026/9/27 13:56:44

城通网盘直连解析器:3步告别繁琐下载流程

城通网盘直连解析器:3步告别繁琐下载流程 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘复杂的下载流程而烦恼吗?广告等待、验证码输入、页面跳转...这些繁琐操作…

作者头像 李华
网站建设 2026/9/25 14:12:42

Sunshine游戏串流:打造家庭多设备娱乐中枢的完整指南

Sunshine游戏串流:打造家庭多设备娱乐中枢的完整指南 【免费下载链接】Sunshine Sunshine: Sunshine是一个自托管的游戏流媒体服务器,支持通过Moonlight在各种设备上进行低延迟的游戏串流。 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshin…

作者头像 李华
网站建设 2026/9/27 17:11:22

虾皮怎样避免订单逾期出货

虾皮平台对于卖家运营设有明确的规范,商家在注册开店时需仔细遵守各项规则,以确保店铺能够顺利成长。若店铺运营中出现逾期出货的风险会怎么样?卖家应该如何应对? 强烈建议商家尽量避免订单逾期发货,因为这不仅会影响买…

作者头像 李华