开启MySQL慢查询日志需在配置文件中添加slow_query_log、slow_query_log_file、long_query_time和log_queries_not_using_indexes参数并重启服务,通过SHOW VARIABLES验证状态,使用mysqldumpslow或pt-query-digest分析日志,重点关注执行时间长、未使用索引的SQL语句以优化性能。

要开启并配置MySQL的慢查询日志,需要在MySQL配置文件中进行相关设置,并结合工具进行分析。以下是具体操作方法和分析建议。
开启慢查询日志
编辑MySQL的配置文件(通常为my.cnf或my.ini),在[mysqld]段落中添加以下参数:
- slow_query_log = ON:启用慢查询日志功能
- slow_query_log_file = /var/log/mysql/mysql-slow.log:指定慢查询日志文件路径(需确保目录存在且MySQL有写权限)
- long_query_time = 2:设定SQL执行时间超过多少秒才记录为慢查询(例如2秒)
- log_queries_not_using_indexes = ON:可选,记录未使用索引的查询语句,便于优化
修改完成后重启MySQL服务使配置生效:
sudo systemctl restart mysql验证慢查询日志是否生效
登录MySQL执行如下命令查看当前慢查询状态:
SHOW VARIABLES LIKE 'slow_query%';SHOW VARIABLES LIKE 'long_query_time';
确认输出中slow_query_log为ON,且日志路径正确。可以手动执行一条耗时较长的SQL测试是否被记录。
慢查询日志分析方法
使用MySQL自带的mysqldumpslow工具分析日志内容:
- mysqldumpslow -s at -t 10 /var/log/mysql/mysql-slow.log:按平均执行时间排序,显示最慢的前10条SQL
- mysqldumpslow -s c -t 5 /var/log/mysql/mysql-slow.log:按出现次数排序,找出频繁执行的慢SQL
常见关注点包括:执行时间长、扫描行数多、未使用索引、锁等待时间高等。
使用pt-query-digest进行深度分析
Percona Toolkit中的pt-query-digest功能更强大,可生成详细报告:
pt-query-digest /var/log/mysql/mysql-slow.log > slow_report.txt报告包含每类查询的统计信息、示例SQL、执行计划建议等,适合用于性能调优。
基本上就这些,配置好日志后定期分析,能有效发现数据库性能瓶颈。关键是设置合理的long_query_time并关注未走索引的语句。不复杂但容易忽略细节。










