Ubuntu中如何分析慢查询日志

在Ubuntu中分析MySQL慢查询日志可按以下步骤操作:

  1. 确认慢查询日志路径
    通过MySQL命令查看日志文件位置:

    SHOW VARIABLES LIKE 'slow_query_log_file';
    

    默认路径通常为/var/log/mysql/slow.log/var/log/mysql/mysql-slow.log

  2. 使用工具分析日志

    • 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(扫描行数/返回行数,比例过高可能存在索引问题)。

  3. 关键指标分析

    • 高耗时查询:优先优化Query_time长的SQL,检查是否可添加索引或重写逻辑。
    • 全表扫描:若type=ALLkey=NULL,需为对应字段添加索引。
    • 高频查询:统计重复出现的SQL,优化或缓存结果。
  4. 优化建议

    • 为高频查询字段添加索引,避免全表扫描。
    • 重写复杂SQL,拆分大查询为小步骤,减少嵌套子查询。
    • 调整数据库配置,如增大innodb_buffer_pool_size提升缓存效率。

工具安装

  • pt-query-digest属于Percona Toolkit,可通过以下命令安装:
    sudo apt-get install percona-toolkit
    

注意事项

  • 分析前确保慢查询日志已启用(配置slow_query_log=1并重启MySQL)。
  • 生产环境中建议定期轮转日志(如使用logrotate),避免日志文件过大。