跳转到主要内容

这是本节的多页打印视图。 .

返回本页常规视图.

统计信息

Statistics 分类下的 14 个 PostgreSQL 核心配置参数档案。

条目 URL 保持扁平;本分类仅用于侧栏与浏览组织。

1 - compute_query_id

compute_query_id:启用 PostgreSQL 内核计算查询标识符。实测在档范围为 PG14–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 auto,context 为 superuser。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明

Fact — 官方简述译文:启用 PostgreSQL 内核计算查询标识符。

身份

类型 , enum
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 , auto, regress, on, off
非枚举类型记为 —
分类 , Statistics / Monitoring
上游分类
最后 boot 值 , auto
auto

生命周期

Fact
首次观测 PG14
在档版本 PG14–19 Beta 3
移除版本
引入提交 5fd9dfa5f50e — Move pg_stat_statements query jumbling to core.
提交日期 2021-04-07
Discussion 讨论 1

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG14–19 Beta 3 auto auto

机制详解

compute_query_id 控制 PostgreSQL 内核生成的规范化查询标识符。该标识可出现在 pg_stat_activity、EXPLAIN 与日志中;除非其他模块负责计算,pg_stat_statements 也需要它。

auto 允许模块请求内核计算,on 始终计算,off 禁止计算,regress 与 auto 相同但为稳定回归输出而不在 EXPLAIN 显示 ID。

只能有一个 provider 计算标识。采用其他算法的扩展必须关闭内核实现并检测冲突,不能静默发布两个不兼容 ID。其 superuser 上下文允许获授权会话修改,无需重启服务器。

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP pg_stat_statements 等模块应按需请求内核 ID 时使用 auto;没有此类模块但日志、EXPLAIN 或监控仍需要 ID 时才用 on。应在峰值解析/规划速率下测查询规范化开销。
OLAP auto 或 on 可把长分析语句在 pg_stat_activity、EXPLAIN 与日志间关联。主要成本是查询树规范化与哈希,不是时钟读取;超大语句负载应比较规划 CPU。
小规格 除非外部 query-ID provider 要求 off,否则保留 auto。regress 用于稳定回归输出,不是更小的生产取值;off 会移除 pg_stat_statements 等工具需要的 ID。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP 未修改
OLAP 未修改
CRIT 未修改
TINY 未修改
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG14–19 Beta 3 未修改;OLAP: PG14–19 Beta 3 未修改;CRIT: PG14–19 Beta 3 未修改;TINY: PG14–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。

常见坑

  • 内核 provider 与扩展同时尝试计算不同查询标识。
  • 设置 off 后静默丢失 pg_stat_statements、日志或关联工具需要的 ID。
  • 把 regress 当作生产优化,而不是测试输出模式。
  • 把 query ID 当成跨大版本稳定或具备密码学性质的标识。

track_activities · shared_preload_libraries · log_line_prefix · track_activity_query_size

参考资料

2 - log_executor_stats

log_executor_stats:把执行器性能统计写入服务器日志。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 off,context 为 superuser。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明

Fact — 官方简述译文:把执行器性能统计写入服务器日志。

身份

类型 , bool
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Statistics / Monitoring
上游分类
最后 boot 值 , off
off

生命周期

Fact
首次观测 PG9.0(研究下界)
在档版本 PG9.0–19 Beta 3
移除版本
引入提交 不作断言:早于 PG9.0 研究边界
提交日期
Discussion

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG9.0–19 Beta 3 off off

机制详解

log_executor_stats 使用类似 getrusage 的粗粒度分析器,为每条查询输出执行阶段资源使用,结果进入服务器日志,适合短时间诊断。

log_statement_stats 报告整条语句,parser、planner 与 executor 开关分别报告各阶段;总开关不能与任何分阶段开关同时启用。

这是同步诊断日志,不是累计统计系统;其数量与格式都不适合作为常规生产遥测。其 superuser 上下文允许获授权会话修改,无需重启服务器。

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP 不要把 log_executor_stats 当作常规 OLTP 调优。只在隔离复现或受控会话中短暂启用,取得所需日志后立即关闭。
OLAP 对特定分析语句,EXPLAIN (ANALYZE, BUFFERS) 与累计视图通常比全局 log_executor_stats 更可操作;若使用必须限定范围并预算日志量。
小规格 保持 log_executor_stats=off。小主机尤其容易受到诊断日志 I/O 与磁盘写满影响。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP 未修改
OLAP 未修改
CRIT 未修改
TINY 未修改
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 未修改;OLAP: PG9.0–19 Beta 3 未修改;CRIT: PG9.0–19 Beta 3 未修改;TINY: PG9.0–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。

常见坑

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

log_statement_stats · log_parser_stats · log_planner_stats · log_min_duration_statement · track_io_timing

参考资料

3 - log_parser_stats

log_parser_stats:把解析器性能统计写入服务器日志。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 off,context 为 superuser。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明

Fact — 官方简述译文:把解析器性能统计写入服务器日志。

身份

类型 , bool
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Statistics / Monitoring
上游分类
最后 boot 值 , off
off

生命周期

Fact
首次观测 PG9.0(研究下界)
在档版本 PG9.0–19 Beta 3
移除版本
引入提交 不作断言:早于 PG9.0 研究边界
提交日期
Discussion

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG9.0–19 Beta 3 off off

机制详解

log_parser_stats 使用类似 getrusage 的粗粒度分析器,为每条查询输出解析阶段资源使用,结果进入服务器日志,适合短时间诊断。

log_statement_stats 报告整条语句,parser、planner 与 executor 开关分别报告各阶段;总开关不能与任何分阶段开关同时启用。

这是同步诊断日志,不是累计统计系统;其数量与格式都不适合作为常规生产遥测。其 superuser 上下文允许获授权会话修改,无需重启服务器。

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP 不要把 log_parser_stats 当作常规 OLTP 调优。只在隔离复现或受控会话中短暂启用,取得所需日志后立即关闭。
OLAP 对特定分析语句,EXPLAIN (ANALYZE, BUFFERS) 与累计视图通常比全局 log_parser_stats 更可操作;若使用必须限定范围并预算日志量。
小规格 保持 log_parser_stats=off。小主机尤其容易受到诊断日志 I/O 与磁盘写满影响。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP 未修改
OLAP 未修改
CRIT 未修改
TINY 未修改
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 未修改;OLAP: PG9.0–19 Beta 3 未修改;CRIT: PG9.0–19 Beta 3 未修改;TINY: PG9.0–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。

常见坑

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

log_statement_stats · log_planner_stats · log_executor_stats · log_min_duration_statement

参考资料

4 - log_planner_stats

log_planner_stats:把规划器性能统计写入服务器日志。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 off,context 为 superuser。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明

Fact — 官方简述译文:把规划器性能统计写入服务器日志。

身份

类型 , bool
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Statistics / Monitoring
上游分类
最后 boot 值 , off
off

生命周期

Fact
首次观测 PG9.0(研究下界)
在档版本 PG9.0–19 Beta 3
移除版本
引入提交 不作断言:早于 PG9.0 研究边界
提交日期
Discussion

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG9.0–19 Beta 3 off off

机制详解

log_planner_stats 使用类似 getrusage 的粗粒度分析器,为每条查询输出规划阶段资源使用,结果进入服务器日志,适合短时间诊断。

log_statement_stats 报告整条语句,parser、planner 与 executor 开关分别报告各阶段;总开关不能与任何分阶段开关同时启用。

这是同步诊断日志,不是累计统计系统;其数量与格式都不适合作为常规生产遥测。其 superuser 上下文允许获授权会话修改,无需重启服务器。

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP 不要把 log_planner_stats 当作常规 OLTP 调优。只在隔离复现或受控会话中短暂启用,取得所需日志后立即关闭。
OLAP 对特定分析语句,EXPLAIN (ANALYZE, BUFFERS) 与累计视图通常比全局 log_planner_stats 更可操作;若使用必须限定范围并预算日志量。
小规格 保持 log_planner_stats=off。小主机尤其容易受到诊断日志 I/O 与磁盘写满影响。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP 未修改
OLAP 未修改
CRIT 未修改
TINY 未修改
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 未修改;OLAP: PG9.0–19 Beta 3 未修改;CRIT: PG9.0–19 Beta 3 未修改;TINY: PG9.0–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。

常见坑

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

log_statement_stats · log_parser_stats · log_executor_stats · log_min_duration_statement · join_collapse_limit

参考资料

5 - log_statement_stats

log_statement_stats:把语句累计性能统计写入服务器日志。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 off,context 为 superuser。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明

Fact — 官方简述译文:把语句累计性能统计写入服务器日志。

身份

类型 , bool
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Statistics / Monitoring
上游分类
最后 boot 值 , off
off

生命周期

Fact
首次观测 PG9.0(研究下界)
在档版本 PG9.0–19 Beta 3
移除版本
引入提交 不作断言:早于 PG9.0 研究边界
提交日期
Discussion

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG9.0–19 Beta 3 off off

机制详解

log_statement_stats 使用类似 getrusage 的粗粒度分析器,为每条查询输出整条语句的资源使用,结果进入服务器日志,适合短时间诊断。

log_statement_stats 报告整条语句,parser、planner 与 executor 开关分别报告各阶段;总开关不能与任何分阶段开关同时启用。

这是同步诊断日志,不是累计统计系统;其数量与格式都不适合作为常规生产遥测。其 superuser 上下文允许获授权会话修改,无需重启服务器。

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP 不要把 log_statement_stats 当作常规 OLTP 调优。只在隔离复现或受控会话中短暂启用,取得所需日志后立即关闭。
OLAP 对特定分析语句,EXPLAIN (ANALYZE, BUFFERS) 与累计视图通常比全局 log_statement_stats 更可操作;若使用必须限定范围并预算日志量。
小规格 保持 log_statement_stats=off。小主机尤其容易受到诊断日志 I/O 与磁盘写满影响。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP 未修改
OLAP 未修改
CRIT 未修改
TINY 未修改
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 未修改;OLAP: PG9.0–19 Beta 3 未修改;CRIT: PG9.0–19 Beta 3 未修改;TINY: PG9.0–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。

常见坑

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

log_parser_stats · log_planner_stats · log_executor_stats · log_min_duration_statement · track_functions

参考资料

6 - stats_fetch_consistency

stats_fetch_consistency:设置读取累计统计信息时的一致性方式。实测在档范围为 PG15–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 cache,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明

Fact — 官方简述译文:设置读取累计统计信息时的一致性方式。

身份

类型 , enum
上游 pg_settings 类型
Context , user
普通用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 , none, cache, snapshot
非枚举类型记为 —
分类 , Statistics / Cumulative Query and Index Statistics
上游分类
最后 boot 值 , cache
cache

生命周期

Fact
首次观测 PG15
在档版本 PG15–19 Beta 3
移除版本
引入提交 5891c7a8ed8f — pgstat: store statistics in shared memory.
提交日期 2022-04-06
Discussion 讨论 1 · 讨论 2 · 讨论 3

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG15–19 Beta 3 cache cache

机制详解

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

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

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

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP 普通 SQL 使用 cache;每项只读一次的抓取查询使用 none;只有明确需要一致观察时才用 snapshot,且不要让监控事务无限保持。
OLAP 对象很多时 snapshot 代价较高;应按监控查询访问模式选择 stats_fetch_consistency,不能只看负载标签。
小规格 保留 cache,除非简单单遍采集器能从 none 获益。该参数改变读取语义,不改变收集准确性,也不会减少底层计数开销。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP 未修改
OLAP 未修改
CRIT 未修改
TINY 未修改
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG15–19 Beta 3 未修改;OLAP: PG15–19 Beta 3 未修改;CRIT: PG15–19 Beta 3 未修改;TINY: PG15–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。

常见坑

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

track_counts · track_activities · track_io_timing · track_functions

参考资料

7 - stats_temp_directory

stats_temp_directory:设置旧统计收集器写临时统计文件的目录。实测在档范围为 PG9.0–14;最后在档的 PG14 启动默认值为 pg_stat_tmp,context 为 sighup。它在 PG15 被移除。
说明

Fact — 官方简述译文:设置旧统计收集器写临时统计文件的目录。

身份

类型 , string
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Statistics / Query and Index Statistics Collector
上游分类
最后 boot 值 , pg_stat_tmp
pg_stat_tmp

生命周期

Fact
首次观测 PG9.0(研究下界)
在档版本 PG9.0–14
移除版本 PG15
引入提交 不作断言:早于 PG9.0 研究边界
提交日期
Discussion

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG9.0–14 pg_stat_tmp pg_stat_tmp

机制详解

PG14 及以前,stats_temp_directory 选择旧统计收集器写临时统计文件的目录;它不保存 ANALYZE 生成的持久列统计。

快速的本地内存目录可减少收集器文件 I/O,且临时内容丢失是可接受的,但权限与目录可用性仍必须让服务器正常工作。

PostgreSQL 15 用共享内存累计统计替换基于文件的收集器架构,并移除该 GUC。迁移到 PG15+ 时应删除配置,而不是映射到另一个目录。其 SIGHUP 上下文允许通过重载配置生效,无需重启服务器。

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP 当前 PostgreSQL 不应调优 stats_temp_directory:升级目标中应删除它,并采用上文所述当前替代行为;只有复现历史版本时才保留。
OLAP 不要把 stats_temp_directory 带入现代分析集群,应测试受支持的当前机制,而不是模拟已移除实现细节。
小规格 版本迁移时删除 stats_temp_directory;它更可能造成未知参数启动失败,而不是带来收益。历史测试实例应保留旧版本上游默认。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG14 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP 未修改
OLAP 未修改
CRIT 未修改
TINY 未修改
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–14 未修改;OLAP: PG9.0–14 未修改;CRIT: PG9.0–14 未修改;TINY: PG9.0–14 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。

常见坑

  • 修改 stats_temp_directory 时忽略文档单位与配置生效上下文。
  • 只优化孤立基准,却忽略并发后的资源总量。
  • 认为配置值能够保证操作系统或存储层实际行为。
  • 修改后没有重新验证启动、故障转移与负载延迟。

stats_fetch_consistency · track_counts · track_activities · data_directory

参考资料

8 - track_activities

track_activities:收集会话当前执行命令的信息。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 superuser。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明

Fact — 官方简述译文:收集会话当前执行命令的信息。

身份

类型 , bool
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Statistics / Cumulative Query and Index Statistics
上游分类
最后 boot 值 , on
on

生命周期

Fact
首次观测 PG9.0(研究下界)
在档版本 PG9.0–19 Beta 3
移除版本
引入提交 不作断言:早于 PG9.0 研究边界
提交日期
Discussion

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG9.0–19 Beta 3 on on

机制详解

track_activities 为 pg_stat_activity 记录每个会话的当前命令、查询标识与时间元数据;即使启用收集,访问仍受权限过滤。

关闭会失去关键实时可观测性,但不会终止命令,也不会直接让命令更快。每会话保存的文本受 track_activity_query_size 限制。

获授权用户可以修改该开关,因此监控应识别主动禁用活动报告的会话。它与 track_counts 控制的累计计数相互独立。其 superuser 上下文允许获授权会话修改,无需重启服务器。

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP 生产环境保持 on,让 pg_stat_activity 提供事故响应所需的当前命令、query ID 与时间信息。应限制视图权限,并单独设置 track_activity_query_size,而不是通过关闭活动收集隐藏文本。
OLAP 长分析会话保持 on;资源竞争时实时阶段与等待上下文尤其重要。若怀疑开销,应先明确测量,再决定是否接受 off 带来的可观测性损失。
小规格 保持 on。它是布尔收集开关,不是缓冲区大小;若要减少查询文本内存,应单独调整 track_activity_query_size,并保留足够诊断文本。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP 未修改
OLAP 未修改
CRIT 未修改
TINY 未修改
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 未修改;OLAP: PG9.0–19 Beta 3 未修改;CRIT: PG9.0–19 Beta 3 未修改;TINY: PG9.0–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。

常见坑

  • 关闭后丢失诊断阻塞或失控会话所需的当前命令证据。
  • 把实时活动收集与 track_counts 控制的累计计数混为一谈。
  • 认为 on 会让每个角色看到所有会话查询文本;可见性仍受权限过滤。
  • 忽略获授权会话可在允许的上下文中关闭自身活动报告。

track_activity_query_size · track_counts · compute_query_id · log_line_prefix · log_min_duration_statement

参考资料

9 - track_activity_query_size

track_activity_query_size:设置 pg_stat_activity.query 预留的字节数。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 1 KiB,context 为 postmaster。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明

Fact — 官方简述译文:设置 pg_stat_activity.query 预留的字节数。

身份

类型 , integer
上游 pg_settings 类型
Context , postmaster
修改后需要重启数据库
单位 , B
原始单位
范围 , 1001048576
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Statistics / Cumulative Query and Index Statistics
上游分类
最后 boot 值 , 1024
1 KiB

生命周期

Fact
首次观测 PG9.0(研究下界)
在档版本 PG9.0–19 Beta 3
移除版本
引入提交 不作断言:早于 PG9.0 研究边界
提交日期
Discussion

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG9.0–10 1024 1024
PG11–19 Beta 3 1024 B 1 KiB

机制详解

track_activity_query_size 为每个活动会话在 pg_stat_activity.query 中保存的当前查询文本实际预留共享内存,单位为字节,并在服务器启动时固定。

长语句会按该存储大小截断;提高它能改善故障上下文,但内存会乘以后端名额数,包括已配置连接容量。

它不改变日志语句长度、pg_stat_statements 查询文本存储或应用 payload 限制。compute_query_id 可用时,查询标识能把截断文本与其他遥测关联。其 postmaster 上下文在服务器启动时固定取值,修改后必须重启。

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP 选择足以保留诊断价值 SQL 的字节数,再按全部后端名额而不是仅活动查询预算近似存储。提高它属于启动共享内存决策,修改后必须重启。
OLAP 很长的生成 SQL 往往需要超过 1kB 才能保持可识别。应把截断频率与事故需求同“取值乘以 MaxBackends”比较;该参数消耗内存,不产生反复读取时钟的开销。
小规格 使用仍能保留有效语句身份的最小值。不能未经乘以小主机连接与 worker 名额,就照搬 crit 模板的 32kB。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP 8192 不同于 boot 值 8192
OLAP 8192 不同于 boot 值 8192
CRIT 32768 不同于 boot 值 32768
TINY 8192 不同于 boot 值 8192
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 = 8192 (dcs);OLAP: PG9.0–19 Beta 3 = 8192 (dcs);CRIT: PG9.0–19 Beta 3 = 32768 (dcs);TINY: PG9.0–19 Beta 3 = 8192 (dcs)。 建议(待人工复核)——编辑推断(待维护者复核):模板比上游保留更多查询文本,crit 的更大值意在保存更完整的诊断上下文。

常见坑

  • 把它当成只为当前活动查询使用的内存,而不是跨后端名额预留的存储。
  • 忘记单位是字节;多字节查询文本可容纳的字符数会少于字节数直觉。
  • 期待它改变日志语句长度或 pg_stat_statements 查询文本存储。
  • 修改后没有执行必需的服务器重启。

track_activities · max_connections · compute_query_id · log_line_prefix · shared_buffers

参考资料

10 - track_cost_delay_timing

track_cost_delay_timing:收集基于成本的 vacuum 延迟计时。实测在档范围为 PG18–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 off,context 为 superuser。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明

Fact — 官方简述译文:收集基于成本的 vacuum 延迟计时。

身份

类型 , bool
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Statistics / Cumulative Query and Index Statistics
上游分类
最后 boot 值 , off
off

生命周期

Fact
首次观测 PG18
在档版本 PG18–19 Beta 3
移除版本
引入提交 bb8dff9995f2 — Add cost-based vacuum delay time to progress views.
提交日期 2025-02-11
Discussion 讨论 1

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG18–19 Beta 3 off off

机制详解

track_cost_delay_timing 测量 VACUUM 与 ANALYZE 因成本限速实际休眠的时间,并出现在进度视图、详细命令输出与符合条件的 autovacuum 日志中。

收集会反复读取操作系统时钟,开销依平台而异。它不会启用 vacuum delay,也不会改变 vacuum_cost_* 策略。

该指标用于区分实际工作与有意节流。广泛启用前可用 pg_test_timing 测量读取时钟的开销。其 superuser 上下文允许获授权会话修改,无需重启服务器。

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP 需要区分 VACUUM/ANALYZE 实际工作与有意 cost-delay 休眠时启用。用 pg_test_timing 和 autovacuum 负载测时钟读取开销;它是布尔值,不设置大小,也不会自行启用成本延迟。
OLAP 长维护与分析工作重叠、需要量化节流时间时有用。应把报告的延迟时间与维护总时长、前台延迟一起比较,并且只有运维真正使用该证据时才长期开启。
小规格 除非需要 vacuum-delay 诊断且平台时钟读取足够便宜,否则保持 off。启用本身不改变维护节流策略;vacuum_cost_* 参数仍然独立。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP 未修改
OLAP on 不同于 boot 值 'on'
CRIT on 不同于 boot 值 'on'
TINY 未修改
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG18–19 Beta 3 未修改;OLAP: PG18–19 Beta 3 = on (dcs);CRIT: PG18–19 Beta 3 = on (dcs);TINY: PG18–19 Beta 3 未修改。 建议(待人工复核)——编辑推断(待维护者复核):仅 OLAP/crit 启用意在长维护或关键可观测场景暴露 vacuum/analyze 成本延迟时间,并接受读取时钟的开销。

常见坑

  • 误以为该开关会启用成本型 vacuum delay,而不是只计时已有延迟。
  • 不使用 pg_test_timing 测量,就忽略平台相关的时钟读取开销。
  • 没有启用相关进度、verbose 或 autovacuum 日志输出,却寻找该指标。
  • 把布尔值当成时长或缓冲区尺寸参数。

vacuum_cost_delay · autovacuum_vacuum_cost_delay · log_autovacuum_min_duration · track_io_timing · vacuum_buffer_usage_limit

参考资料

11 - track_counts

track_counts:收集数据库活动累计统计。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 on,context 为 superuser。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明

Fact — 官方简述译文:收集数据库活动累计统计。

身份

类型 , bool
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Statistics / Cumulative Query and Index Statistics
上游分类
最后 boot 值 , on
on

生命周期

Fact
首次观测 PG9.0(研究下界)
在档版本 PG9.0–19 Beta 3
移除版本
引入提交 不作断言:早于 PG9.0 研究边界
提交日期
Discussion

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG9.0–19 Beta 3 on on

机制详解

track_counts 为 PostgreSQL 的数据库、表与索引累计活动计数提供数据;autovacuum 依赖这些计数决定何时 vacuum 与 analyze。

关闭会移除规划与维护遥测,并可能阻止正常 autovacuum 触发;它本身不会重置已经保存的计数。

统计通过 pg_stat 视图暴露,并遵守 stats_fetch_consistency 的快照规则。收集是服务器级的,但可见性仍受权限控制。其 superuser 上下文允许获授权会话修改,无需重启服务器。

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP 保持 track_counts=on;正常 autovacuum 与容量监控依赖它。只有不代表生产配置的受控实验才可关闭。
OLAP 即使以批查询为主,也应保持 track_counts=on 以支持维护决策;失去 autovacuum 输入换来的微小节省不值得。
小规格 保持 track_counts=on;小系统同样需要 autovacuum 与表活动可见性,关闭后节省的少量开销通常不值得。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP 未修改
OLAP 未修改
CRIT 未修改
TINY 未修改
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 未修改;OLAP: PG9.0–19 Beta 3 未修改;CRIT: PG9.0–19 Beta 3 未修改;TINY: PG9.0–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。

常见坑

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

autovacuum · stats_fetch_consistency · track_activities · default_statistics_target · log_autovacuum_min_duration

参考资料

12 - track_functions

track_functions:收集函数调用次数与耗时统计。实测在档范围为 PG9.0–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 none,context 为 superuser。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明

Fact — 官方简述译文:收集函数调用次数与耗时统计。

身份

类型 , enum
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 , none, pl, all
非枚举类型记为 —
分类 , Statistics / Cumulative Query and Index Statistics
上游分类
最后 boot 值 , none
none

生命周期

Fact
首次观测 PG9.0(研究下界)
在档版本 PG9.0–19 Beta 3
移除版本
引入提交 不作断言:早于 PG9.0 研究边界
提交日期
Discussion

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG9.0–19 Beta 3 none none

机制详解

track_functions 在 pl 模式统计过程语言函数调用与耗时,在 all 模式还包括 SQL/C 函数;none 关闭函数级累计统计。

被规划器内联的简单 SQL 函数会并入调用者,无论本值如何都不会单独统计。嵌套函数时间按统计系统的 total/self 规则报告。

all 扩大插桩范围,在函数密集负载上可能增加开销;计数为累计值,通过 pg_stat_user_functions 等视图观察。其 superuser 上下文允许获授权会话修改,无需重启服务器。

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP 除非函数级调用次数与耗时能回答明确生产问题,否则保持 none。用 pl 把插桩限制到过程语言;只有在函数密集流量上测过开销后才用 all。
OLAP 需要把函数内部时间与调用者时间分开时,可在限时分析中启用 pl 或 all。简单 SQL 函数可能被内联而不可见,因此视图中没有记录不能证明未执行。
小规格 优先 none 或短时局部诊断。该枚举控制插桩范围,不是数值采样率;CPU 受限主机上 all 的开销可能占比很高。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP all 不同于 boot 值 all
OLAP all 不同于 boot 值 all
CRIT all 不同于 boot 值 all
TINY all 不同于 boot 值 all
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 = all (dcs);OLAP: PG9.0–19 Beta 3 = all (dcs);CRIT: PG9.0–19 Beta 3 = all (dcs);TINY: PG9.0–19 Beta 3 = all (dcs)。 建议(待人工复核)——编辑推断(待维护者复核):显式 all 在所有模板最大化函数级可观测性,同时接受插桩开销与 SQL 内联盲区。

常见坑

  • 期待被内联的 SQL 语言函数出现在函数统计中。
  • 没有测量函数密集负载的插桩开销就全局启用 all。
  • 读取累计 total/self 时间时忽略嵌套调用与统计快照行为。
  • 把 none、pl、all 当作采样等级,而不是不同插桩范围。

track_counts · stats_fetch_consistency · compute_query_id · jit_expressions · log_statement_stats

参考资料

13 - track_io_timing

track_io_timing:收集数据库 I/O 等待计时。实测在档范围为 PG9.2–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 off,context 为 superuser。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明

Fact — 官方简述译文:收集数据库 I/O 等待计时。

身份

类型 , bool
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Statistics / Cumulative Query and Index Statistics
上游分类
最后 boot 值 , off
off

生命周期

Fact
首次观测 PG9.2
在档版本 PG9.2–19 Beta 3
移除版本
引入提交 309c64745ea1 — Rename track_iotiming GUC to track_io_timing.
提交日期 2012-04-29
Discussion

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG9.2–19 Beta 3 off off

机制详解

track_io_timing 测量 WAL 对象以外的数据库 I/O 等待时间,并填充 pg_stat_database、pg_stat_io、pg_stat_get_backend_io()、带 BUFFERS 的 EXPLAIN、维护输出与相关扩展。

该设置会反复读取操作系统时钟,开销依平台而异,可用 pg_test_timing 测量;记录的是等待经过时间,不是纯设备服务时间。

WAL I/O 由 track_wal_io_timing 单独控制。启用计时只增加可观测性,不会让 I/O 异步化,也不会改变规划成本。其 superuser 上下文允许获授权会话修改,无需重启服务器。

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP pg_stat_io、带 BUFFERS 的 EXPLAIN 或事故分析需要数据库 I/O 等待时间时启用。用 pg_test_timing 与峰值语句速率测时钟开销;Pigsty 的 on 是可观测性选择,不是吞吐调优数值。
OLAP 长扫描与落盘会让关系和临时文件计时很有价值。只有这些计数真正用于诊断时才长期开启,并比较执行开销,区分经过等待与纯设备服务时间。
小规格 只有平台时钟读取成本可接受且指标有人使用时才用 on。该布尔值没有“保守数值大小”;off 只移除计时,不会移除 I/O。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP on 不同于 boot 值 'on'
OLAP on 不同于 boot 值 'on'
CRIT on 不同于 boot 值 'on'
TINY on 不同于 boot 值 'on'
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.2–19 Beta 3 = on (dcs);OLAP: PG9.2–19 Beta 3 = on (dcs);CRIT: PG9.2–19 Beta 3 = on (dcs);TINY: PG9.2–19 Beta 3 = on (dcs)。 建议(待人工复核)——编辑推断(待维护者复核):显式 on 与源码注释“收集 I/O 统计”的目标一致,并接受依平台而异的时钟开销。

常见坑

  • 把等待经过时间当成不含排队和调度影响的纯设备服务时间。
  • 期待该开关让 I/O 异步化或改变规划器成本估计。
  • 误以为它包含 WAL 计时;WAL 由 track_wal_io_timing 控制。
  • 没有在实际平台测量时钟读取开销就启用。

track_wal_io_timing · track_counts · stats_fetch_consistency · effective_io_concurrency · compute_query_id

参考资料

14 - track_wal_io_timing

track_wal_io_timing:收集 WAL I/O 等待计时。实测在档范围为 PG14–19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 off,context 为 superuser。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明

Fact — 官方简述译文:收集 WAL I/O 等待计时。

身份

类型 , bool
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Statistics / Cumulative Query and Index Statistics
上游分类
最后 boot 值 , off
off

生命周期

Fact
首次观测 PG14
在档版本 PG14–19 Beta 3
移除版本
引入提交 ff99918c625a — Track total amounts of times spent writing and syncing WAL data to disk.
提交日期 2021-03-09
Discussion 讨论 1

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG14–19 Beta 3 off off

机制详解

track_wal_io_timing 测量 WAL I/O 等待,并在 pg_stat_io 与 pg_stat_get_backend_io() 的 wal 对象下暴露;它与普通数据库 I/O 计时相互独立。

收集会反复读取操作系统时钟,可能产生依平台而异的开销。pg_test_timing 可测时钟读取成本,负载测试则反映总影响。

它不会改变 wal_sync_method、持久性或 WAL 吞吐。与 track_io_timing 配合可把 WAL 等待与关系/临时文件 I/O 分开。其 superuser 上下文允许获授权会话修改,无需重启服务器。

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP 分析提交延迟、需要把 WAL write/sync 等待与关系 I/O 分开时启用。测量平台时钟开销,并把计数与 synchronous_commit、wal_sync_method 和存储行为关联。
OLAP 读密集分析可能很少受益,而批量导入与刷新任务的写阶段可能很有价值。应按真正使用证据的写阶段启用,而不是仅因负载标签是 OLAP。
小规格 除非正在诊断 WAL 延迟且时钟读取便宜,否则保持 off。只有需要同时区分 WAL 与非 WAL 等待时,才与 track_io_timing 配合。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP 未修改
OLAP 未修改
CRIT 未修改
TINY 未修改
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG14–19 Beta 3 未修改;OLAP: PG14–19 Beta 3 未修改;CRIT: PG14–19 Beta 3 未修改;TINY: PG14–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。

常见坑

  • 期待 WAL 计时包含 track_io_timing 测量的关系与临时文件 I/O。
  • 把 WAL 等待经过时间当成纯设备服务时间。
  • 认为该开关会改变持久性、wal_sync_method 或 WAL 吞吐。
  • 没有在生产平台测量时钟读取开销就启用。

track_io_timing · wal_sync_method · synchronous_commit · track_counts · stats_fetch_consistency

参考资料