如何在mysql中设置慢查询日志格式_mysql慢查询日志格式

开启慢查询日志需配置slow_query_log=ON,long_query_time设置阈值,log_output指定输出方式为FILE或TABLE,可记录执行时间长、未使用索引的SQL语句,便于性能分析。

MySQL 中设置慢查询日志格式,核心是配置相关参数以控制日志输出内容和格式。

开启慢查询日志并设置输出格式

MySQL 慢查询日志用于记录执行时间超过指定阈值的 SQL 语句,便于性能分析。要设置其格式,需调整几个关键参数:

  • slow_query_log:启用或禁用慢查询日志(设为 ON 开启)
  • long_query_time:定义“慢”的标准,单位为秒(如 1.0 表示超过 1 秒)
  • log_output:设置日志输出方式,支持 FILE 或 TABLE(或两者)
  • slow_query_log_file:指定日志文件路径(当 log_output 包含 FILE 时)
  • log_slow_queries:旧版本兼容参数,新版本建议使用 slow_query_log

若希望将日志写入 mysql.slow_log 表中以便用 SQL 查询,需确保 log_output 包含 TABLE。例如:

SET GLOBAL log_output = 'TABLE';

然后查看日志内容:

SELECT * FROM mysql.slow_log ORDER BY start_time DESC LIMIT 10;

控制日志详细程度

通过以下参数可调整日志记录的信息粒度:

  • log_queries_not_using_indexes:是否记录未使用索引的查询(即使未超时)
  • log_slow_admin_statements:是否记录慢的管理类语句(如 ALTER TABLE)
  • log_throttle_queries_not_using_indexes:限制未使用索引的日志条目频率,防止日志爆炸

这些设置直接影响日志内容的丰富性与实用性。例如,开启 log_queries_not_using_indexes 可帮助发现潜在性能问题。

慢查询日志格式字段说明

当 log_output 设为 TABLE 时,mysql.slow_log 表包含如下主要字段:

  • start_time:查询开始时间
  • user_host:执行用户及来源主机
  • query_time:SQL 执行耗时
  • lock_time:锁等待时间
  • rows_sent:返回行数
  • rows_examined:扫描行数
  • sql_text:实际执行的 SQL 语句
  • db:当前数据库名

这些字段构成了慢查询日志的标准格式,可用于分析性能瓶颈。

配置示例(my.cnf)

在 MySQL 配置文件中添加以下内容:

[mysqld]
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1.0
log_output = FILE,TABLE
log_queries_not_using_indexes = ON
log_slow_admin_statements = ON

重启服务或动态生效后,MySQL 将按此格式记录慢查询。

基本上就这些。合理设置慢查询日志格式,能显著提升数据库性能调优效率。