pg_stat_statements 的时间表是什么时候

What is the timeframe for pg_stat_statements

我想知道在 postgres 中的 "pg_stat_statements" 视图。 数据的时间范围是什么?它显示的是过去 24 小时内执行的查询还是执行的全部查询?由于 table 不包含任何时间戳。

没有时间范围,只有跟踪的最大语句数。

F.28.3. Configuration Parameters

pg_stat_statements.max (integer)

pg_stat_statements.max is the maximum number of statements tracked by the module (i.e., the maximum number of rows in the pg_stat_statements view). If more distinct statements than that are observed, information about the least-executed statements is discarded. The default value is 1000. This parameter can only be set at server start.

pg_stat_statements 提供的视图的时间范围是从上次重置 (pg_stat_statements_reset) 或创建扩展的时间开始的,这可能是很长的时间。

如果达到最大阈值(在最近的 Postgres 版本上为 5000),则有逻辑使不频繁的语句过期,这意味着如果您不经常查询视图,您可能看不到完整的 activity。

为了更好地处理这些数据,您基本上有两个选择:

1)每24小时调用一次pg_stat_statements_reset(),这意味着查询数据只会反映最近的activity(理想情况下你会跟踪重置发生的时间,这样您就可以计算出每分钟的调用次数等)

2) 使用单独的监控工具拍摄快照并保留历史 pg_stat_statements 统计数据

你选择哪一个取决于你的要求,但我通常会选择 (2) 用于生产系统。

免责声明:我是 pganalyze (https://pganalyze.com) 的作者,这是一个托管的 Postgres 监控工具,还提供历史 pg_stat_statement 统计数据。