选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / 配置参数 / 运行时统计数据

CONFIGURATION PARAMETER运行时统计数据 / 累积查询和索引统计

stats_fetch_consistency

设置读取累计统计信息时的一致性方式。

Sets the consistency of accesses to statistics data.

枚举 会话 引入 15 现存至 20 devel 0 次默认值变更

类型
枚举enum
上下文
会话任何用户都可在会话内用 SET 修改
默认值
cache
枚举值
none, cache, snapshot
引入版本
15
状态
现存

PostgreSQL 18 手册 官方文档 引入提交 5891c7a8ed

版本轨迹

相对 PostgreSQL 17 无变化。

默认值变迁

cache 15 – 20

默认值自 PostgreSQL 15 起没有变过。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。

手册说明

PostgreSQL 18 手册 · 19.9 运行时统计数据 本站手册 官方原文

本版译文与 PostgreSQL 15 完全一致,下面就是同一段文字。

确定在事务中多次访问累积统计信息时的行为。当设置为 none时,每次访问都会重新从共享内存中获取计数器。 当设置为cache时,对对象的统计信息的第一次访问会将这些统计信息缓存, 直到事务结束,除非调用pg_stat_clear_snapshot()。 当设置为snapshot时,第一次访问统计信息会缓存当前数据库中所有可访问的统计信息, 直到事务结束,除非调用pg_stat_clear_snapshot()。 在事务中更改此参数会丢弃统计快照。默认值为cache

Note

none适用于监控系统。如果值只被访问一次,它是最有效的。 cache确保重复访问产生相同的值,这对涉及自连接的查询很重要。 snapshot在交互式检查统计信息时可能很有用,但开销较高, 特别是存在许多数据库对象时。

机制详解

stats_fetch_consistency 定义同一事务内重复读取累计统计的行为。none 每次重新取对象,cache 首次读取后缓存该对象,snapshot 首次访问时物化当前数据库全部可见统计。

缓存或快照持续到事务结束或调用 pg_stat_clear_snapshot();事务内修改该参数会丢弃当前统计快照。

none 适合每个计数只读一次的监控查询;cache 保证同一对象重复读取稳定;snapshot 提供一致的交互视图,但对象很多时开销更高。其 user 上下文允许按会话或事务局部修改,之后执行或重新规划的工作会读取新值。

调优建议

按典型负载给出的取值思路,不是放之四海皆准的配方:实际取值要看数据量、并发度与硬件。

  • OLTP在线事务处理

    普通 SQL 使用 cache;每项只读一次的抓取查询使用 none;只有明确需要一致观察时才用 snapshot,且不要让监控事务无限保持。

  • OLAP分析与批处理

    对象很多时 snapshot 代价较高;应按监控查询访问模式选择 stats_fetch_consistency,不能只看负载标签。

  • 小规格低配实例与开发机

    保留 cache,除非简单单遍采集器能从 none 获益。该参数改变读取语义,不改变收集准确性,也不会减少底层计数开销。

常见问题

  • 启用或扩大 stats_fetch_consistency 前没有测量收集与观察开销。
  • 把统计收集语义误认为性能控制或 I/O 控制。
  • 认为长事务内看到的所有统计都会立即更新。
  • 收集敏感查询文本或标识,却没有匹配的访问与保留策略。

演化历史

相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。

  1. PostgreSQL 20 ← 19 沿用 19

    事实沿用 19

  2. PostgreSQL 15 ← 14 新增此参数

    PostgreSQL 15 起可用

逐版本快照

每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。

版本 默认值单位上下文类型最小值最大值枚举值
15 cache 会话 枚举 none, cache, snapshot
16 cache 会话 枚举 none, cache, snapshot
17 cache 会话 枚举 none, cache, snapshot
18 cache 会话 枚举 none, cache, snapshot
19 cache 会话 枚举 none, cache, snapshot
20 沿用 cache 会话 枚举 none, cache, snapshot

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
Statistics 运行时统计数据 8 个
累积查询和索引统计 8
stats_fetch_consistency 枚举 会话 cache
设置读取累计统计信息时的一致性方式。 现存
track_activities 布尔 会话(超级用户) on
收集会话当前执行命令的信息。 现存
track_activity_query_size 整数 重启生效 1 KiB 132 次
设置 pg_stat_activity.query 预留的字节数。 现存
track_cost_delay_timing 布尔 会话(超级用户) off
收集基于成本的 vacuum 延迟计时。 现存
track_counts 布尔 会话(超级用户) on
收集数据库活动累计统计。 现存
track_functions 枚举 会话(超级用户) none
收集函数调用次数与耗时统计。 现存
track_io_timing 布尔 会话(超级用户) off
收集数据库 I/O 等待计时。 现存
track_wal_io_timing 布尔 会话(超级用户) off
收集 WAL I/O 等待计时。 现存