mysql的慢查询日志是数据库性能优化的重要辅助工具,它会自动记录所有执行时间超过预设阈值的sql语句,方便开发者排查执行效率低下的查询操作。通过慢查询日志可以快速定位需要优化的sql,提升数据库整体运行效率。

查看慢查询日志的基础配置
在查看慢查询日志之前,首先需要确认慢查询功能是否开启,以及相关的配置参数。可以通过mysql命令行执行以下语句查看核心配置:
-- 查看慢查询日志是否开启 SHOW VARIABLES LIKE 'slow_query_log'; -- 查看慢查询日志的存储路径 SHOW VARIABLES LIKE 'slow_query_log_file'; -- 查看慢查询的时间阈值,单位秒 SHOW VARIABLES LIKE 'long_query_time';
如果slow_query_log的值为ON,说明慢查询日志功能已经开启,此时slow_query_log_file对应的值就是日志文件的存储路径。如果值为OFF,则需要先开启该功能才能查看日志。
开启和配置慢查询日志
如果慢查询日志未开启,可以通过以下命令临时开启,重启mysql后会恢复默认配置:
-- 开启慢查询日志 SET GLOBAL slow_query_log = 'ON'; -- 设置慢查询时间阈值为2秒,执行时间超过2秒的语句会被记录 SET GLOBAL long_query_time = 2; -- 设置慢查询日志的存储路径,路径需要根据实际环境调整 SET GLOBAL slow_query_log_file = '/var/lib/mysql/slow-query.log';
如果需要永久生效,需要修改mysql的配置文件my.cnf(linux系统)或者my.ini(windows系统),在[mysqld]节点下添加以下配置:
[mysqld] # 开启慢查询日志 slow_query_log = 1 # 慢查询日志存储路径 slow_query_log_file = /var/lib/mysql/slow-query.log # 慢查询时间阈值,单位秒 long_query_time = 2 # 记录未使用索引的查询到慢日志 log_queries_not_using_indexes = 1
修改完成后重启mysql服务即可生效。
查看慢查询日志内容
确定日志文件路径后,可以直接通过系统命令查看日志内容,也可以通过mysql内置的日志分析工具处理。
直接查看日志文件
在linux系统中,可以使用cat、tail等命令查看日志内容,例如查看最后10条慢查询记录:
tail -n 10 /var/lib/mysql/slow-query.log
慢查询日志的内容通常包含以下信息:
- 查询执行的时间戳
- 查询执行耗时,单位秒
- 执行查询的用户和主机信息
- 查询对应的数据库名称
- 具体的sql语句内容
- 查询扫描的行数、返回的行数等信息
使用mysql自带的日志分析工具
mysql提供了mysqldumpslow工具,可以对慢查询日志进行统计和分析,常用命令如下:
# 查看慢查询日志中耗时最长的10条sql mysqldumpslow -s t -t 10 /var/lib/mysql/slow-query.log # 按照查询次数排序,查看出现次数最多的10条慢sql mysqldumpslow -s c -t 10 /var/lib/mysql/slow-query.log
mysqldumpslow的参数说明:-s表示排序方式,可选值有t(按查询时间排序)、c(按查询次数排序)、l(按锁定时间排序);-t表示返回的记录条数。
慢查询日志的常见应用场景
慢查询日志主要用于数据库性能优化场景,例如:
- 定位执行时间过长的select查询,优化查询语句或者添加合适的索引
- 发现未使用索引的查询,调整索引结构提升查询效率
- 统计高频出现的慢查询,优先处理对业务影响较大的性能问题
需要注意的是,慢查询日志本身会对mysql性能产生轻微影响,因此在非排查问题期间,如果没有持续优化的需求,可以暂时关闭该功能,避免不必要的性能开销。
mysql慢查询日志slow_query_loglong_query_timesql优化修改时间:2026-07-02 00:48:13