↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

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.7 手册 官方文档 引入提交 5891c7a8ed

版本轨迹

相对 PostgreSQL 17 无变化。

默认值变迁

cache 15 – 19

已记录的默认值在 PostgreSQL 15–19 之间未变。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。

手册说明

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

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

注意

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 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 — — — 枚举 — — —

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
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 —
启用基于代价的清理延迟计时(参见第 19.10.2 节)。 现存
track_counts 布尔 会话(超级用户) on —
启用对数据库活动的统计信息收集。 现存
track_functions 枚举 会话(超级用户) none —
启用函数调用次数和耗时的跟踪。 现存
track_io_timing 布尔 会话(超级用户) off —
启用数据库 I/O 等待的计时。 现存
track_wal_io_timing 布尔 会话(超级用户) off —
启用 WAL I/O 等待的计时。 现存