MySQL慢查询日志

MySQL慢查询日志
最新回答
▎黎子°

2026-02-22 14:02:20

MySQL慢查询日志详解

MySQL慢查询日志是数据库性能调优的重要工具之一,它记录了所有执行时间超过指定阈值(long_query_time)并且扫描记录数不小于min_examined_row_limit的所有SQL语句的日志。以下是对MySQL慢查询日志的详细解析:

一、慢查询日志的基本设置

  1. 启用慢查询日志

    在MySQL 5.1.29之前,使用--log-slow-queries[=file_name]选项启动mysqld时,慢查询日志开始被记录。

    在MySQL 5.1.29及以后,推荐使用--slow_query_log[={0|1}]来显式指定慢查询的状态(0为关闭,1为开启),并使用slow_query_log_file[=file_name]来指定慢查询日志的路径。

  2. 设置阈值

    long_query_time参数用于设置慢查询的阈值,单位为秒,最小为0,精度可以到微秒。默认情况下,该值为10秒。

    min_examined_row_limit参数用于设置扫描记录数的最小限制,但通常这个参数在默认情况下已经足够,不需要手动调整。

  3. 日志输出方式

    使用--log-output参数可以指定日志的输出方式,默认输出到文件,也可以选择输出到表(但表中记录的慢查询时间只能精确到秒)。

二、慢查询日志的默认行为

  • 默认情况下,慢查询日志是关闭的。
  • 在默认情况下,有两类常见语句不会记录到慢查询日志:管理语句(如ALTER TABLE、ANALYZE TABLE等)和不使用索引进行查询的语句。
  • 如果要监控这两类SQL语句,可以分别通过参数--log-slow-admin-statements和log_queries_not_using_indexes进行控制。

三、慢查询日志的位置和格式

  • 慢查询日志默认文件名是host_name-slow.log,位于数据目录下(由DATADIR参数指定)。
  • 慢查询日志的格式是纯文本,可以直接使用文本编辑器(如vi、more等)或记事本等工具查看。

四、慢查询日志的读取方法

  1. 直接查看

    可以直接使用文本编辑器或命令行工具(如more、cat等)查看慢查询日志文件。

  2. 使用mysqldumpslow命令

    mysqldumpslow是一个专门用于分析慢查询日志的工具,它可以对SQL文本完全一致但变量不同的语句进行统计,变量值用N来代替。

    使用mysqldumpslow可以大大提高阅读慢查询日志的效率,并迅速定位系统的SQL瓶颈。

五、慢查询日志的应用场景

  • 慢查询日志是数据库性能调优的重要工具之一,通过分析慢查询日志,可以找出执行时间较长的SQL语句,进而进行优化。
  • 在进行数据库性能调优时,可以先开启慢查询日志,然后运行一段时间的业务,再分析慢查询日志,找出需要优化的SQL语句。
  • 慢查询日志还可以用于监控数据库的运行状态,及时发现并解决潜在的性能问题。

综上所述,MySQL慢查询日志是数据库性能调优的重要工具之一,通过合理配置和使用慢查询日志,可以大大提高数据库的运行效率和性能。