MySQL中怎么启用并分析慢查询日志?

MySQL中怎么启用并分析慢查询日志?
最新回答
陌生De自我ヾ忘却

2026-07-25 20:27:13

启用并分析MySQL慢查询日志的步骤如下:

1. 启用慢查询日志

  • 检查当前状态:通过SHOW VARIABLES LIKE '%slow%';查看慢查询日志是否开启(slow_query_log为ON表示已启用)。
  • 开启日志:执行SET GLOBAL slow_query_log = 1;动态启用(需管理员权限)。
  • 设置日志路径:通过SET GLOBAL slow_query_log_file = '/path/to/slow.log';指定日志文件位置(默认路径通常为/var/lib/mysql/hostname-slow.log)。

2. 配置慢查询阈值

  • 设置时间阈值:通过SET GLOBAL long_query_time = 5;将查询时间超过5秒的语句记录到日志(默认10秒,最小可设为0)。
  • 其他可选配置:

    log_queries_not_using_indexes = ON:记录未使用索引的查询。

    min_examined_row_limit = 1000:仅记录扫描超过1000行的查询。

3. 选择日志输出方式

  • 输出到文件:默认方式,需确保log_output包含FILE(可通过SET GLOBAL log_output='FILE';设置)。
  • 输出到数据库表:设置log_output='TABLE',日志将写入mysql.slow_log表。

4. 分析慢查询日志

  • 使用mysqldumpslow工具:

    基本命令:mysqldumpslow /path/to/slow.log

    常用参数:

    -s at:按平均查询时间排序(默认)。

    -t 10:显示前10条慢查询。

    -a:显示完整SQL(默认合并相似查询为N)。

    -g "pattern":过滤包含特定模式的查询(如-g "SELECT.*users")。

  • 直接查看日志文件:使用文本工具(如grep、less)分析原始日志内容。

5. 关键注意事项

  • 权限要求:修改全局变量需SUPER权限,日志文件需MySQL用户读写权限。
  • 性能影响:启用慢查询日志可能增加少量I/O开销,建议仅在排查问题时开启。
  • 日志轮转:定期清理或归档日志文件,避免占用过多磁盘空间。

通过以上步骤,可有效启用慢查询日志并定位性能瓶颈,结合EXPLAIN等工具进一步优化SQL语句。