mysql如何配置慢查询阈值

开启慢查询日志需先启用功能并设置阈值,通过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 服务即可。

基本上就这些。合理设置慢查询阈值并定期分析日志,能有效发现性能瓶颈。