在 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 将按此格式记录慢查询。
基本上就这些。合理设置慢查询日志格式,能显著提升数据库性能调优效率。
