news 2026/7/31 13:46:40

mysql慢日志

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
mysql慢日志

与 PostgreSQL 的pg_stat_statements类似,MySQL 也有自己的慢查询日志(Slow Query Log)机制,用于记录执行时间过长的 SQL 语句。

下面是查看 MySQL 慢日志的完整指南。

⚙️ 第一步:开启与配置慢日志

MySQL 的慢日志功能默认是关闭的,需要手动开启。你可以选择“临时开启”或“永久开启”。

1. 临时开启(适合临时诊断,重启后失效)

通过 MySQL 命令行进行设置,无需重启服务。

sql

-- 1. 开启慢查询日志 SET GLOBAL slow_query_log = 'ON'; -- 2. 设置“慢”的阈值(单位:秒),例如设为2秒 SET GLOBAL long_query_time = 2; -- 3. (可选)记录所有未使用索引的查询,即使它们很快 SET GLOBAL log_queries_not_using_indexes = 'ON'; -- 4. (可选)指定日志文件路径 SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';
2. 永久开启(修改配置文件)

编辑 MySQL 的配置文件(通常是my.cnfmy.ini),在[mysqld]段落下添加或修改以下配置:

ini

[mysqld] slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2 log_queries_not_using_indexes = 1

修改后,需要重启 MySQL 服务才能使配置永久生效。

🔍 第二步:查看慢日志

配置生效后,MySQL 就会开始记录慢查询。你可以通过以下方式查看日志内容。

1. 直接查看日志文件(最常用)

这是最直接的方法。首先,你需要知道日志文件的位置。

  • 查找日志文件位置:在 MySQL 命令行中执行:

    sql

    SHOW VARIABLES LIKE 'slow_query_log_file';
  • 查看日志内容:在服务器终端,使用tailcatless等命令查看文件。

    bash

    # 实时监控最新的慢查询(推荐) sudo tail -f /var/log/mysql/slow.log # 查看整个文件 sudo cat /var/log/mysql/slow.log

    一个典型的慢日志条目会包含执行时间、锁等待时间、扫描行数等关键信息。

2. 从表中查询(备选)

MySQL 也支持将慢日志输出到数据库的表中。

  • 配置输出目标

    sql

    SET GLOBAL log_output = 'TABLE';
  • 查询日志表

    sql

    SELECT * FROM mysql.slow_log;

📊 第三步:分析慢日志(使用工具)

直接查看原始日志文件对于分析大量数据来说效率很低。MySQL 提供了强大的分析工具来帮你快速定位问题。

1.mysqldumpslow(MySQL 自带)

这是官方提供的工具,可以将相似的查询(除了具体的数值)进行归类汇总,非常实用。

常用用法

bash

# 按平均查询时间排序,显示前10条最慢的查询 mysqldumpslow -s t -t 10 /var/log/mysql/slow.log # 按查询次数排序,找出执行最频繁的慢查询 mysqldumpslow -s c /var/log/mysql/slow.log # 按锁等待时间排序 mysqldumpslow -s l /var/log/mysql/slow.log

s参数常用值:

  • t:按查询时间排序

  • at:按平均查询时间排序

  • c:按执行次数排序

  • l:按锁等待时间排序

2.pt-query-digest(Percona Toolkit,功能更强大)

这是一个第三方工具,功能比mysqldumpslow更加强大和灵活,能生成非常详细的分析报告,是业界公认的最佳实践。

安装(以 Ubuntu 为例):

bash

sudo apt-get install percona-toolkit

常用用法

bash

# 生成一份完整的慢查询分析报告 pt-query-digest /var/log/mysql/slow.log # 将报告输出到文件 pt-query-digest /var/log/mysql/slow.log > slow_report.txt # 只分析最近12小时的慢查询 pt-query-digest --since=12h /var/log/mysql/slow.log

☁️ 特殊情况:云数据库(RDS 等)

如果你使用的是云数据库(如阿里云 RDS、腾讯云 CDB 等),操作方式会有所不同:

  • 无法直接登录服务器修改配置文件或查看日志文件。

  • 你需要登录云厂商的Web 控制台,在数据库实例的管理页面找到“参数设置”“参数组”,修改slow_query_loglong_query_time等相关参数。

  • 开启后,同样在控制台的“日志管理”“慢日志”页面,可以查看、下载或通过内置的分析工具来分析慢查询。

💎 总结

总的来说,查看 MySQL 慢日志的步骤可以概括为:

  1. 开启日志:通过SET GLOBAL临时开启,或修改my.cnf永久开启。

  2. 查看日志:使用tail -f实时监控,或查询mysql.slow_log表。

  3. 分析日志:使用mysqldumpslow快速分析,或使用pt-query-digest生成深度报告。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/31 13:46:12

微信/支付宝/抖音三端扫码兼容性告急!紧急发布AI艺术二维码2024适配黄金标准(含SDK调用速查表)

更多请点击: https://codechina.net 第一章:AI生成艺术二维码的定义与演进脉络 AI生成艺术二维码是融合计算机视觉、生成式人工智能与传统二维码编码原理的新型信息载体。它在保持标准QR码可被通用扫描器识别的前提下,通过深度学习模型&…

作者头像 李华
网站建设 2026/7/31 13:44:24

LangGraph构建智能客服审批流程的技术实践

1. 项目概述:构建支持审批与恢复执行的客服Agent 去年在金融行业实施智能客服系统时,客户突然提出个需求:"当涉及交易操作时,必须插入人工审批环节,且审批后要能自动恢复之前的对话流程"。这个需求让我开始研…

作者头像 李华
网站建设 2026/7/31 13:43:58

MonoGame WebAssembly调试指南:浏览器控制台与源码映射实战

1. 项目概述:为什么MonoGame WebAssembly调试如此棘手?如果你正在用MonoGame开发跨平台的游戏或应用,并且最终目标是让它在浏览器里跑起来,那你大概率已经和WebAssembly(WASM)打过交道了。把C#/.NET代码编译…

作者头像 李华
网站建设 2026/7/31 13:43:49

STM32 HAL库驱动L298N电机:CubeMX配置与调试实战指南

1. 从零开始:为什么选择STM32 HAL库与L298N驱动电机如果你正在做一个机器人底盘、一个小型传送带,或者任何需要让轮子转起来的嵌入式项目,那么“STM32 L298N 直流有刷电机”这个组合大概率会出现在你的备选方案里。这个组合经典到什么程度呢…

作者头像 李华