首页/数据/SQL 速查/pt-query-digest 分析慢日志
性能与执行计划72 条

pt-query-digest 分析慢日志

Percona Toolkit 的聚合分析工具:按查询模板给出耗时分布、次数与示例,适合大日志的常态化分析。

SQL 速查数据更新于 2026-10-13

工具做什么

pt-query-digest 是 Percona Toolkit 的分析工具:把慢日志、general log 或 performance_schema 的数据按查询模板聚合,输出每个模板的耗时占比、执行次数、平均与 95 分位耗时以及示例语句。日志很大、需要常态化分析时,比手工翻日志高效得多。

基本信息

输入来源慢日志、general log、performance_schema 表
输出结构头部整体统计,加按模板分段的明细
排序维度默认按总耗时占比排序,可改按次数或平均耗时
时间过滤--since 只看某时间点之后的记录
实时采样--processlist 轮询当前会话列表

典型使用场景

  • 分析几 GB 的慢日志找优化目标
  • 按总耗时占比排序定位大头
  • 只看某个时间段的慢查询
  • 实时采样当前正在跑的语句
  • 对比优化前后的模板分布

常用命令

常用命令
# 分析慢日志:输出按总耗时排序的模板列表
pt-query-digest /var/log/mysql/slow.log

# 只看指定时间之后
pt-query-digest --since '2024-06-01 00:00:00' /var/log/mysql/slow.log

# 实时轮询 processlist 采样
pt-query-digest --processlist h=127.0.0.1 --interval 1 --iterations 30

# 输出到文件,便于两次分析结果对比
pt-query-digest /var/log/mysql/slow.log > digest-$(date +%F).txt

报告逐段读法

部分内容怎么看
头部总览总查询数、时间跨度与占比先看整体量级与时间范围
模板段每个模板的占比、次数、耗时分位占比高的优先优化
95 分位长尾耗时比平均值更能反映用户体验
示例语句带参数的代表性语句回放时替换成生产参数
执行计划可选输出直接指向索引或写法问题
聚合会折叠具体参数:报告里的示例带的是样本参数,评估性能要在接近生产的参数与数据下进行,别直接照着示例下结论。
解析超大 general log 的时间和磁盘占用都很高:优先用慢日志或采样数据,general log 只在确有必要时短期开启。

易错点

  • 对超大 general log 直接解析:时间与磁盘占用都很高,优先用慢日志或采样数据
  • 拿报告里的示例参数回放:样本参数不代表生产分布,评估要在接近真实的条件下做
  • 只看平均耗时不看分位:偶发的严重慢查询会被均值稀释,95 分位更能暴露长尾
  • 只看总耗时占比不看次数:高频小查询与低频大查询的优化手段完全不同
  • 把聚合报告的模板当原始语句执行:参数已被抽象,需要回慢日志找原始语句

数据来源与参考

  • Percona Toolkit Documentation · pt-query-digest
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌