pg_stat_statements 深入使用

本页目录

前两篇文章:

img

第三类衍生指标:百分比

现在,让我们来研究第三类衍生指标:某个查询组 (标准化查询或更大的组,例如"特定用户的所有语句"或"所有 UPDATE 语句") 在整个工作负载中所占的百分比,基于指标 M。

如何计算:首先,针对所有查询组应用基于时间的微分 (如第一部分中讨论的 dM/dt),然后将特定查询组的值除以所有查询组的总和。

%M 的可视化与解读

虽然 dM/dt 给我们提供了绝对值,如每秒调用次数或 GiB/sec,但 %M 值是相对指标。这些值帮助我们识别工作负载中各个方面的"主要参与者" — 频率、时间、IO 操作等。

通过分析相对值,我们可以理解每个优化方向的潜在收益大小,并优先处理最具潜力的优化。例如:

在较大的系统中处理比例值的一种方法是对较大比例值做出反应,将相应的查询组作为优化候选项。例如,在具有大量查询组的系统中,可能有必要使用以下方法:

对比例的分析也可以在监控系统中通过可视化方式隐式完成:观察 dM/dt 图表 (例如 QPS,每秒块命中次数),我们可以直观地理解哪个查询组在整个工作负载中对特定指标 M 的贡献最大。然而,为此,图表需要"堆叠式"显示。

如果我们处理两个快照,那么明确获取这些值是有意义的。此外,出于可视化目的,为我们分析的每个指标绘制一个饼图也是有意义的。

%M 示例

总结:三大宏观优化目标及其使用方法

现在,通过我们在前两部分中描述的分析方法,让我们仅基于一个指标 total_exec_time 来考虑三种常见的宏观优化类型。

理解这三种方法 (然后将这种逻辑应用于其他指标) 可以帮助你理解如何设计监控仪表盘。

附加内容:播客集

相关的 Postgres.FM 播客集:


这就是我们目前对 pgss 的讨论。当然,这不是完整的指南,我们可能会在未来再次讨论这个重要的扩展。

如有任何问题或其他反馈,请告诉我!

讨论与补充

在 GitHub 查看讨论

支持作者

感谢支持 PostgreSQL Howto 的长期维护。

微信赞赏码

读者交流群

二维码若已过期,可通过公众号 PostgreSQL 学徒或邮件联系。

PostgreSQL 学徒读者交流群二维码