mysql慢日志的实现示例

 更新时间:2026年08月05日 09:02:06   作者:leijmdas  
本文主要介绍了mysql慢日志的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

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

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

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

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

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

-- 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.cnf 或 my.ini),在 [mysqld] 段落下添加或修改以下配置:

[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 命令行中执行:

SHOW VARIABLES LIKE 'slow_query_log_file';

查看日志内容:在服务器终端,使用 tailcatless 等命令查看文件。

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

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

2. 从表中查询(备选)

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

配置输出目标

SET GLOBAL log_output = 'TABLE';

查询日志表

SELECT * FROM mysql.slow_log;

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

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

1.mysqldumpslow(MySQL 自带)

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

常用用法

# 按平均查询时间排序,显示前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 更加强大和灵活,能生成非常详细的分析报告,是业界公认的最佳实践。

sudo apt-get install percona-toolkit

常用用法

# 生成一份完整的慢查询分析报告
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_log、long_query_time 等相关参数。
  • 开启后,同样在控制台的 “日志管理” 或 “慢日志” 页面,可以查看、下载或通过内置的分析工具来分析慢查询。

💎 总结

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

  • 开启日志:通过 SET GLOBAL 临时开启,或修改 my.cnf 永久开启。
  • 查看日志:使用 tail -f 实时监控,或查询 mysql.slow_log 表。
  • 分析日志:使用 mysqldumpslow 快速分析,或使用 pt-query-digest 生成深度报告。

到此这篇关于mysql慢日志的实现示例的文章就介绍到这了,更多相关mysql慢日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mysql安装与卸载、Navicat工具的使用详细教程

    Mysql安装与卸载、Navicat工具的使用详细教程

    Navicat是一套快速、可靠和全面的数据库管理工具,专门用于简化数据库管理和降低管理成本,这篇文章主要介绍了Mysql安装与卸载、Navicat工具使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-11-11
  • MYSQL8如何快速修改root密码

    MYSQL8如何快速修改root密码

    MySQL8的改密码跟MySQL5不同,很多朋友都遇到过这个问题,今天小编给大家讲解下MYSQL8如何快速修改root密码,需要的朋友可以参考下
    2023-05-05
  • Can''t connect to MySQL server on ''localhost'' (10048)问题解决方法

    Can''t connect to MySQL server on ''localhost'' (10048)问题解决方

    windows 2003服务器运行php的提示Can't connect to MySQL server on 'localhost' (10048), 下面来看下解决方法
    2013-09-09
  • MySQL 案例分析讲解外连接语法

    MySQL 案例分析讲解外连接语法

    数据库的一个难题是无法将SQL语句的执行结果转换为想要的格式。本节,我们将通过学习格式转换中具有代表性的行列转换和嵌套式侧栏的生成方法,深入理解一下其中有重要作用的外连接
    2022-04-04
  • mysql的binlog三种配置模式小结

    mysql的binlog三种配置模式小结

    本文主要介绍了mysql的binlog三种配置模式小结,主要是binlog_format的值有3个选项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • linux下导入、导出mysql数据库命令的实现方法

    linux下导入、导出mysql数据库命令的实现方法

    下面小编就为大家分享一篇linux下导入、导出mysql数据库命令的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • MySQL导入csv、excel或者sql文件的小技巧

    MySQL导入csv、excel或者sql文件的小技巧

    这篇文章主要介绍了MySQL导入csv、excel或者sql文件的小技巧,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧
    2018-05-05
  • mysql 5.7.17 64bit安装配置方法图文教程

    mysql 5.7.17 64bit安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 5.7.17 64bit解压缩版安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 使用Canal实现MySQL主从同步的流程步骤

    使用Canal实现MySQL主从同步的流程步骤

    这篇文章主要介绍了如何使用Canal实现MySQL主从同步效果,文中通过代码示例和图文结合的方式给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-04-04
  • 使用MyDumper重建MySQL副本的实现

    使用MyDumper重建MySQL副本的实现

    本文主要介绍了MyDumper重建MySQL副本的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-03-03

最新评论