mysql慢查询日志用于记录执行时间超过指定阈值的sql语句,是排查数据库性能问题的重要手段。开启该功能主要依赖修改my.cnf配置文件,并对long_query_time等参数进行合理设置。

一、什么是慢查询日志
慢查询日志(slow query log)会记录所有执行时间大于等于long_query_time的sql语句。默认情况下该功能是关闭的,需要手动开启。通过分析日志,可以找到耗时较高的查询并进行索引或语句优化。
二、通过修改my.cnf开启慢查询日志
在linux系统中,mysql的配置文件通常为/etc/my.cnf或/etc/mysql/my.cnf。你可以编辑该文件,在[mysqld]区块下添加如下配置:
[mysqld] # 开启慢查询日志 slow_query_log = 1 # 慢查询日志文件存放路径 slow_query_log_file = /var/log/mysql/slow.log # 设置慢查询阈值,单位为秒,这里表示超过2秒的查询会被记录 long_query_time = 2 # 记录未使用索引的查询(可选) log_queries_not_using_indexes = 1
修改完成后,需要重启mysql服务使配置生效:
# centos系统 systemctl restart mysqld # ubuntu系统 service mysql restart
三、动态开启慢查询日志
如果不方便重启数据库,也可以通过sql命令在运行时动态开启。执行以下命令:
-- 开启慢查询日志 SET GLOBAL slow_query_log = 'ON'; -- 设置慢查询阈值为1秒 SET GLOBAL long_query_time = 1; -- 查看当前设置 SHOW VARIABLES LIKE 'long_query_time';
注意,动态设置只对当前实例生效,重启后会失效,因此生产环境建议同时修改my.cnf。
四、验证慢查询日志是否生效
可以故意执行一个休眠语句来测试日志是否正常记录:
SELECT SLEEP(3);
随后查看配置的日志文件,若能看到对应记录,说明开启成功:
cat /var/log/mysql/slow.log
五、常用参数说明
| 参数名 | 作用 |
|---|---|
| slow_query_log | 是否开启慢查询日志,1为开启,0为关闭 |
| slow_query_log_file | 指定慢查询日志的存储路径 |
| long_query_time | 定义慢查询的时间阈值,单位秒 |
| log_queries_not_using_indexes | 是否记录未使用索引的查询 |
六、注意事项
- long_query_time可以设置为小数,例如0.5表示500毫秒。
- 慢查询日志会占用磁盘空间,需定期清理或归档。
- 高并发场景下建议仅在排查问题时开启,避免影响性能。
通过以上方式,你就可以顺利开启mysql慢查询日志,并利用long_query_time精准捕获需要优化的sql语句。
mysql慢查询日志long_query_time修改时间:2026-07-26 00:51:10