mysql5.7的慢查询日志用于记录执行时间超过指定阈值的sql语句,是数据库性能优化过程中不可或缺的工具,通过配置slow_query_log相关参数可以灵活开启和管理慢查询日志。

慢查询日志相关核心参数说明
在配置之前需要先了解几个和慢查询日志相关的核心参数,这些参数共同决定了慢查询日志的工作状态:
- slow_query_log:控制慢查询日志是否开启,取值为ON表示开启,OFF表示关闭,默认值为OFF。
- slow_query_log_file:指定慢查询日志的存储路径和文件名,默认路径为mysql的数据目录。
- long_query_time:设置慢查询的时间阈值,单位是秒,执行时间超过该值的sql会被记录到慢查询日志中,默认值为10秒。
- log_queries_not_using_indexes:设置为ON时,未使用索引的查询也会被记录到慢查询日志中,默认值为OFF。
临时开启慢查询日志(重启后失效)
如果只需要临时开启慢查询日志进行测试,不需要永久生效,可以通过sql语句直接修改全局参数,这种方式不需要重启mysql服务,但mysql重启后配置会恢复默认值。
步骤1:查看当前慢查询配置状态
先执行以下语句查看当前慢查询相关的参数配置:
-- 查看慢查询日志是否开启 SHOW GLOBAL VARIABLES LIKE 'slow_query_log'; -- 查看慢查询时间阈值 SHOW GLOBAL VARIABLES LIKE 'long_query_time'; -- 查看慢查询日志存储路径 SHOW GLOBAL VARIABLES LIKE 'slow_query_log_file';
步骤2:开启慢查询日志并设置参数
执行以下语句开启慢查询日志,同时设置时间阈值为2秒,日志路径为自定义路径:
-- 开启慢查询日志 SET GLOBAL slow_query_log = 'ON'; -- 设置慢查询时间阈值为2秒,超过2秒的查询会被记录 SET GLOBAL long_query_time = 2; -- 设置慢查询日志存储路径,路径需要根据实际mysql运行环境调整 SET GLOBAL slow_query_log_file = '/var/lib/mysql/slow_query.log'; -- 可选:开启未使用索引的查询记录 SET GLOBAL log_queries_not_using_indexes = 'ON';
步骤3:验证配置是否生效
配置完成后可以执行一条睡眠超过阈值的sql语句,检查慢查询日志是否生成对应记录:
-- 执行睡眠3秒的语句,超过设置的2秒阈值,应该被记录到慢查询日志 SELECT SLEEP(3);
之后查看设置的slow_query_log_file路径下的文件,如果存在对应的查询记录,说明临时配置生效。
永久开启慢查询日志(重启后生效)
如果需要慢查询日志在mysql重启后依然保持开启状态,需要修改mysql的配置文件,不同系统的配置文件路径略有差异,linux系统一般是/etc/my.cnf或者/etc/mysql/my.cnf,windows系统一般是mysql安装目录下的my.ini。
步骤1:编辑配置文件
在配置文件的[mysqld]模块下添加以下配置内容:
[mysqld] # 开启慢查询日志 slow_query_log = ON # 慢查询日志存储路径,根据实际环境调整 slow_query_log_file = /var/lib/mysql/slow_query.log # 慢查询时间阈值,单位秒 long_query_time = 2 # 可选:记录未使用索引的查询 log_queries_not_using_indexes = ON
步骤2:重启mysql服务
修改完配置文件后需要重启mysql服务让配置生效,不同系统的重启命令如下:
-- linux系统使用systemctl重启 systemctl restart mysqld -- 或者旧版本linux使用service命令 service mysql restart -- windows系统可以在服务管理器中重启mysql服务,或者使用命令行 net stop mysql net start mysql
步骤3:验证永久配置
重启完成后再次执行查看参数的sql语句,确认参数值已经变为配置文件中设置的值,同时可以执行测试sql验证日志是否正常记录。
慢查询日志的注意事项
- 慢查询日志会占用一定的磁盘空间,需要定期清理过期的日志文件,避免磁盘空间被占满。
- long_query_time参数支持小数点后多位精度,比如设置为0.5表示记录执行超过0.5秒的查询。
- 如果slow_query_log_file指定的路径不存在,mysql启动时会报错,需要提前创建好目录并赋予mysql进程写入权限。
- 生产环境建议根据实际业务情况调整时间阈值,避免阈值设置过小导致日志量过大,或者阈值过大导致漏记慢查询。
mysql5.7slow_query_log慢查询日志数据库优化修改时间:2026-06-30 00:21:28