pg_stat_statements的时间范围是多少?

时间:2018-06-11 17:27:10

标签: sql database postgresql postgresql-9.2 pg-stat-statements

我想知道postgres中的“pg_stat_statements”视图。 数据的时间范围是什么?它是否显示最近24小时内执行的查询或执行了整体查询?由于该表不包含任何时间戳。

有人可以为此提供帮助吗?

谢谢,

2 个答案:

答案 0 :(得分:2)

pg_stat_statements提供的视图的时间范围来自上次重置(pg_stat_statements_reset)或创建扩展的时间,这可能需要很长时间。

如果达到最大阈值(最近的Postgres版本为5000),则存在使不常见语句失效的逻辑,这意味着如果您不经常查询视图,则可能看不到完整的活动。

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

1)每24小时调用一次pg_stat_statements_reset(),这意味着查询数据只会反映最近的活动(理想情况下,您可以跟踪重置的时间,因此您可以确定每分钟的通话次数等)

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

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

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

答案 1 :(得分:1)

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

  

F.28.3. Configuration Parameters

     

pg_stat_statements.max (integer)

     

pg_stat_statements.max是模块跟踪的最大语句数(即pg_stat_statements视图中的最大行数)。如果观察到的语句多于不同的语句,则丢弃有关执行最少的语句的信息。默认值为1000.此参数只能在服务器启动时设置。