mysql的慢查询日志用于记录执行时间超过指定阈值的sql语句,是数据库性能优化的核心工具之一,通过启动命令配置相关参数是开启该功能的主要方式。

慢查询相关核心参数说明
在配置之前需要先了解几个关键参数的含义:
- slow_query_log:慢查询日志开关,取值为ON时开启,OFF时关闭
- long_query_time:慢查询阈值,单位是秒,默认值为10,执行时间超过该值的sql会被记录
- slow_query_log_file:慢查询日志的存储路径,默认存放在mysql的数据目录下
- log_queries_not_using_indexes:是否记录未使用索引的sql,开启后即使执行时间未超过阈值也会被记录
通过启动命令临时开启慢查询
如果只需要临时开启慢查询,不需要永久生效,可以在mysql服务运行时通过命令行执行配置命令,重启服务后配置会失效。
步骤1:连接mysql服务
使用终端执行以下命令连接本地mysql服务,输入密码后进入mysql命令行界面:
mysql -u root -p
步骤2:开启慢查询并设置参数
依次执行以下sql语句,开启慢查询并设置相关参数:
-- 开启慢查询日志 SET GLOBAL slow_query_log = 'ON'; -- 设置慢查询阈值为2秒,超过2秒的sql会被记录 SET GLOBAL long_query_time = 2; -- 设置慢查询日志存储路径,可根据实际路径调整 SET GLOBAL slow_query_log_file = '/var/lib/mysql/slow.log'; -- 开启未使用索引的sql记录 SET GLOBAL log_queries_not_using_indexes = 'ON';
步骤3:验证配置是否生效
执行以下查询语句,查看参数是否已经更新:
SHOW VARIABLES LIKE 'slow_query_log'; SHOW VARIABLES LIKE 'long_query_time'; SHOW VARIABLES LIKE 'slow_query_log_file';
通过启动命令永久开启慢查询
如果需要配置永久生效,需要修改mysql的配置文件,在启动服务时自动加载慢查询相关配置。
步骤1:找到mysql配置文件
不同系统的mysql配置文件路径不同:
- Linux系统通常是
/etc/my.cnf或者/etc/mysql/my.cnf - Windows系统通常是mysql安装目录下的
my.ini文件
步骤2:修改配置文件添加慢查询参数
在配置文件的[mysqld]模块下添加以下配置内容:
[mysqld] # 开启慢查询日志 slow_query_log = ON # 慢查询阈值,单位秒 long_query_time = 2 # 慢查询日志存储路径 slow_query_log_file = /var/lib/mysql/slow.log # 记录未使用索引的sql log_queries_not_using_indexes = ON
步骤3:重启mysql服务使配置生效
修改完配置文件后,需要通过启动命令重启mysql服务,不同系统的重启命令如下:
Linux系统重启命令
# systemd管理的系统 systemctl restart mysqld # service管理的系统 service mysqld restart
Windows系统重启命令
# 停止mysql服务 net stop mysql # 启动mysql服务 net start mysql
慢查询日志的使用注意事项
- 慢查询阈值不要设置过小,否则会记录大量正常sql,增加日志存储和排查压力
- 生产环境开启慢查询后,要定期清理日志文件,避免占用过多磁盘空间
- 可以通过
mysqldumpslow工具分析慢查询日志,快速定位高频耗时sql - 如果只需要针对单个会话开启慢查询,可以把
GLOBAL换成SESSION执行设置命令,仅对当前连接生效
注意:修改配置文件后必须重启mysql服务才能生效,临时配置在mysql服务重启后会恢复默认值,需要根据使用场景选择合适的配置方式。