在Ubuntu中分析MySQL慢查询日志可按以下步骤操作:
-
确认慢查询日志路径
通过MySQL命令查看日志文件位置:SHOW VARIABLES LIKE 'slow_query_log_file';默认路径通常为
/var/log/mysql/slow.log或/var/log/mysql/mysql-slow.log。 -
使用工具分析日志
- mysqldumpslow(官方工具):
按执行时间排序,显示最耗时的慢查询:mysqldumpslow -s t /var/log/mysql/slow.log可选参数:
-s c(按出现次数)、-s l(按锁等待时间)。 - pt-query-digest(Percona工具,推荐):
生成详细报告,包含总耗时、扫描行数、索引使用情况等:pt-query-digest /var/log/mysql/slow.log > slow_analysis.txt报告中重点关注
Total time(总耗时)、Rows examined/Rows sent(扫描行数/返回行数,比例过高可能存在索引问题)。
- mysqldumpslow(官方工具):
-
关键指标分析
- 高耗时查询:优先优化
Query_time长的SQL,检查是否可添加索引或重写逻辑。 - 全表扫描:若
type=ALL或key=NULL,需为对应字段添加索引。 - 高频查询:统计重复出现的SQL,优化或缓存结果。
- 高耗时查询:优先优化
-
优化建议
- 为高频查询字段添加索引,避免全表扫描。
- 重写复杂SQL,拆分大查询为小步骤,减少嵌套子查询。
- 调整数据库配置,如增大
innodb_buffer_pool_size提升缓存效率。
工具安装:
pt-query-digest属于Percona Toolkit,可通过以下命令安装:sudo apt-get install percona-toolkit
注意事项:
- 分析前确保慢查询日志已启用(配置
slow_query_log=1并重启MySQL)。 - 生产环境中建议定期轮转日志(如使用
logrotate),避免日志文件过大。