开启慢查询日志
-- 查看当前状态
SHOW VARIABLES LIKE 'slow_query%';
SHOW VARIABLES LIKE 'long_query_time';
-- 开启并设置阈值(1秒)
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 1;配置 my.cnf 永久生效:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
log_queries_not_using_indexes = 1使用 mysqldumpslow 分析
# 按查询次数排序
mysqldumpslow -s c -t 10 /var/log/mysql/slow.log
# 按查询时间排序
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log使用 pt-query-digest(Percona 工具集)
pt-query-digest /var/log/mysql/slow.log > report.txt优化方向
- 添加合适的索引
- 改写 SQL(避免子查询,改用 JOIN)
- 减少返回字段数
- 调整
join_buffer_size等参数
慢查询日志是 DBA 调优的第一手资料。
