工具做什么
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 只在确有必要时短期开启。