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










