开启慢查询日志需先启用功能并设置阈值,通过SHOW VARIABLES查看状态,SET GLOBAL配置参数,建议将long_query_time设为1秒,并启用log_queries_not_using_indexes记录未使用索引的查询,最后将配置写入my.cnf或my.ini实现持久化,重启MySQL生效。

在 MySQL 中,慢查询是指执行时间超过指定阈值的 SQL 语句。通过配置慢查询阈值,可以记录这些耗时操作,便于后续分析和优化。
开启慢查询日志
要配置慢查询,首先要确保慢查询日志功能已开启:
- 查看当前是否开启慢查询日志:
SHOW VARIABLES LIKE 'slow_query_log'; - 如果未开启,可通过以下命令启用:
SET GLOBAL slow_query_log = 'ON'; - 设置慢查询日志文件路径(可选):
SET GLOBAL slow_query_log_file = '/var/log/mysql-slow.log';
设置慢查询时间阈值
MySQL 使用 long_query_time 参数定义慢查询的时间阈值(单位:秒),默认通常是 10 秒,一般建议调整为更合理的值,比如 1 秒或 0.5 秒。
- 查看当前阈值:
SHOW VARIABLES LIKE 'long_query_time'; - 设置新的阈值(例如 1 秒):
SET GLOBAL long_query_time = 1; - 注意:该参数是会话级缓存,修改后需重新连接客户端才能看到更新后的值。
记录没有使用索引的查询(可选)
除了执行时间,还可以让 MySQL 记录未使用索引的查询语句,帮助发现潜在问题。
- 启用此功能:
SET GLOBAL log_queries_not_using_indexes = 'ON'; - 这样即使查询很快,但没走索引也会被记录到慢查询日志中。
持久化配置(避免重启失效)
上述 SET 命令只在运行时生效,重启后会失效。要永久生效,需写入 MySQL 配置文件(通常是 my.cnf 或 my.ini):
[mysqld] slow_query_log = ON slow_query_log_file = /var/log/mysql-slow.log long_query_time = 1 log_queries_not_using_indexes = ON
修改后重启 MySQL 服务即可。
基本上就这些。合理设置慢查询阈值并定期分析日志,能有效发现性能瓶颈。










