这是本节的多页打印视图。 .
开发者选项
- 1: allow_in_place_tablespaces
- 2: allow_system_table_mods
- 3: backtrace_functions
- 4: debug_discard_caches
- 5: debug_io_direct
- 6: debug_logical_replication_streaming
- 7: debug_parallel_query
- 8: force_parallel_mode
- 9: ignore_checksum_failure
- 10: ignore_invalid_pages
- 11: ignore_system_indexes
- 12: jit_debugging_support
- 13: jit_dump_bitcode
- 14: jit_expressions
- 15: jit_profiling_support
- 16: jit_tuple_deforming
- 17: post_auth_delay
- 18: pre_auth_delay
- 19: remove_temp_files_after_crash
- 20: send_abort_for_crash
- 21: send_abort_for_kill
- 22: trace_connection_negotiation
- 23: trace_notify
- 24: trace_recovery_messages
- 25: trace_sort
- 26: wal_consistency_checking
- 27: zero_damaged_pages
条目 URL 保持扁平;本分类仅用于侧栏与浏览组织。
1 - allow_in_place_tablespaces
Fact — 官方简述译文:允许在 pg_tblspc 内直接创建 tablespace,用于测试。
身份
类型,- 上游 pg_settings 类型
Context,- 超级用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG10 |
| 在档版本 | PG10–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 7bdbbb87340f — Allow “in place” tablespaces. |
| 提交日期 | 2022-07-27 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG10–19 Beta 3 | off |
— | off |
机制详解
allow_in_place_tablespaces 允许超级用户用空 location 把 tablespace 直接建在 pg_tblspc 下,而不是使用指向外部位置的正常符号链接;它用于同机测试主备实例。
这种目录布局违反备份与 tablespace 管理工具的常规假设,因为工具通常期望 pg_tblspc 条目是链接;它也不会让同位置 tablespace 成为独立存储。
该开关在特权 CREATE TABLESPACE 操作时读取,不是性能参数。关闭后,以这种方式创建的对象仍可能留存。其 superuser 上下文允许获授权会话修改,无需重启服务器。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 allow_in_place_tablespaces 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 allow_in_place_tablespaces 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 allow_in_place_tablespaces 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG10–19 Beta 3 未修改;OLAP: PG10–19 Beta 3 未修改;CRIT: PG10–19 Beta 3 未修改;TINY: PG10–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 allow_in_place_tablespaces 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
data_directory · wal_level · hot_standby · archive_mode
参考资料
2 - allow_system_table_mods
Fact — 官方简述译文:允许修改系统表的结构。
身份
类型,- 上游 pg_settings 类型
Context,- 超级用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.0(研究下界) |
| 在档版本 | PG9.0–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 不作断言:早于 PG9.0 研究边界 |
| 提交日期 | — |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.0–19 Beta 3 | off |
— | off |
机制详解
allow_system_table_mods 解除系统目录结构修改保护,并允许其他通常禁止的目录操作;仅有超级用户身份通常也不能执行这些动作。
目录定义与 PostgreSQL 代码、缓存描述、bootstrap 数据、WAL 和升级假设紧密耦合;表面合法的 ALTER 也可能造成不可逆损坏或数据丢失。
该参数用于 PostgreSQL 开发、bootstrap 与严格受控工具,不是受支持的扩展机制;扩展应使用公开目录与 hook 接口。其 superuser 上下文允许获授权会话修改,无需重启服务器。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 绝不能用 allow_system_table_mods 做性能调优。只限 PostgreSQL 开发或有已验证备份与精确回滚路径的可丢弃维护流程。 |
| OLAP | 负载类型不会降低 allow_system_table_mods 的目录损坏风险;分析系统同样必须关闭。 |
| 小规格 | 保持 allow_system_table_mods=off。没有预备环境不等于可以在唯一数据副本上实验。 |
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 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 allow_system_table_mods 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
allow_in_place_tablespaces · ignore_system_indexes · zero_damaged_pages · wal_consistency_checking
参考资料
3 - backtrace_functions
Fact — 官方简述译文:当指定函数中发生错误时记录调用栈。
身份
类型,- 上游 pg_settings 类型
Context,- 超级用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- empty string
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG13 |
| 在档版本 | PG13–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 71a8a4f6e365 — Add backtrace support for error reporting |
| 提交日期 | 2019-11-08 |
| Discussion | 讨论 1 · 讨论 2 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG13–19 Beta 3 | "" |
— | empty string |
机制详解
backtrace_functions 是内部 C 函数名的逗号分隔列表。错误起源函数命中列表时,PostgreSQL 会在服务器日志中的错误后附加原生调用栈。
它匹配 C 符号而非 SQL 函数名。是否可用以及符号质量取决于平台、编译器、构建参数、调试信息与函数内联。
该设置可只针对狭窄故障路径,而无需为所有错误记录栈。调用栈会暴露实现细节并增加日志量,因此应限定范围并保护日志。其 superuser 上下文允许获授权会话修改,无需重启服务器。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 backtrace_functions 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 backtrace_functions 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 backtrace_functions 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG13–19 Beta 3 未修改;OLAP: PG13–19 Beta 3 未修改;CRIT: PG13–19 Beta 3 未修改;TINY: PG13–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 backtrace_functions 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
log_error_verbosity · log_min_error_statement · compute_query_id · log_line_prefix
参考资料
4 - debug_discard_caches
Fact — 官方简述译文:为调试而激进地使系统目录缓存失效。
身份
类型,- 上游 pg_settings 类型
Context,- 超级用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- 0
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG14 |
| 在档版本 | PG14–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 6201fa3c166f — Rename debug_invalidate_system_caches_always to debug_discard_caches. |
| 提交日期 | 2021-07-13 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG14–19 Beta 3 | 0 |
— | 0 |
机制详解
debug_discard_caches 在最早时机使系统目录缓存条目失效;更高值会递归执行。非零值会让服务器极慢,用于暴露缓存失效 bug。
只有以 DISCARD_CACHES_ENABLED 构建时才支持,通常随 –enable-cassert 自动启用;生产构建保持零并拒绝修改。
该参数测试病态缓存抖动下的正确性,不会刷新 shared_buffers、操作系统页缓存或普通查询结果缓存。其 superuser 上下文允许获授权会话修改,无需重启服务器。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 debug_discard_caches 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 debug_discard_caches 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 debug_discard_caches 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
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 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 debug_discard_caches 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
ignore_system_indexes · shared_buffers · debug_parallel_query · allow_system_table_mods
参考资料
5 - debug_io_direct
Fact — 官方简述译文:为指定文件访问使用直接 I/O。
身份
类型,- 上游 pg_settings 类型
Context,- 修改后需要重启数据库
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- empty string
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG16 |
| 在档版本 | PG16–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 319bae9a8da6 — Rename io_direct to debug_io_direct. |
| 提交日期 | 2023-05-15 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG16–19 Beta 3 | "" |
— | empty string |
机制详解
debug_io_direct 为选定操作请求绕过缓存的文件访问,可选 data、wal 与 wal_init;PostgreSQL 依平台映射到 O_DIRECT、F_NOCACHE 或 FILE_FLAG_NO_BUFFERING。
空字符串关闭直接 I/O。不支持的内核或文件系统可能拒绝启动或在操作时失败,且对齐要求依平台不同。
PostgreSQL 文档明确把当前非默认用法描述为会降低性能的开发测试。它不同于 PG18 异步 I/O 方法,不应作为生产缓存策略。其 postmaster 上下文在服务器启动时固定取值,修改后必须重启。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 debug_io_direct 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 debug_io_direct 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 debug_io_direct 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG16–19 Beta 3 未修改;OLAP: PG16–19 Beta 3 未修改;CRIT: PG16–19 Beta 3 未修改;TINY: PG16–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 debug_io_direct 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
io_method · io_max_concurrency · wal_sync_method · shared_buffers · backend_flush_after
参考资料
6 - debug_logical_replication_streaming
Fact — 官方简述译文:强制大型事务立即流式发送或序列化变更。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- buffered
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG16 |
| 在档版本 | PG16–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 39d4207e876f — Rename logical_replication_mode to debug_logical_replication_streaming |
| 提交日期 | 2023-08-29 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG16–19 Beta 3 | buffered |
— | buffered |
机制详解
debug_logical_replication_streaming 强制大型事务逻辑复制路径立即流式发送或序列化,而不是等待正常缓冲阈值;buffered 是生产行为。
发布端 immediate 会在订阅启用 streaming 时逐项流出,否则逐项序列化,从而绕过 logical_decoding_work_mem 触发;并行订阅端则强制写文件,而不是正常共享内存队列。
因此发布端与订阅端会覆盖不同代码路径。它是回归与故障复现控制,不是延迟或内存调优捷径。其 user 上下文允许按会话或事务局部修改,之后执行或重新规划的工作会读取新值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 debug_logical_replication_streaming 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 debug_logical_replication_streaming 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 debug_logical_replication_streaming 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG16–19 Beta 3 未修改;OLAP: PG16–19 Beta 3 未修改;CRIT: PG16–19 Beta 3 未修改;TINY: PG16–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 debug_logical_replication_streaming 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
logical_decoding_work_mem · max_logical_replication_workers · max_sync_workers_per_subscription · wal_level
参考资料
7 - debug_parallel_query
Fact — 官方简述译文:为测试而强制规划器使用并行查询节点。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG16 |
| 在档版本 | PG16–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 5352ca22e001 — Rename force_parallel_mode to debug_parallel_query |
| 提交日期 | 2023-02-15 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG16–19 Beta 3 | off |
— | off |
机制详解
debug_parallel_query 即使预计没有性能收益,也会强制安全查询进入并行模式。on 会在安全时添加顶层 Gather;regress 还会隐藏测试专用输出差异。
并行安全限制仍然适用。强制上下文可暴露被错误标为 parallel safe 的函数;即便最终没有可用 worker,也可能禁止子事务等操作。
它在 PG16 取代旧名称 force_parallel_mode,用于回归测试,不是让生产查询变快或绕过所有并行成本决策。其 user 上下文允许按会话或事务局部修改,之后执行或重新规划的工作会读取新值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 debug_parallel_query 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 debug_parallel_query 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 debug_parallel_query 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG16–19 Beta 3 未修改;OLAP: PG16–19 Beta 3 未修改;CRIT: PG16–19 Beta 3 未修改;TINY: PG16–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 debug_parallel_query 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
force_parallel_mode · max_parallel_workers_per_gather · max_parallel_workers · parallel_setup_cost · parallel_leader_participation
参考资料
8 - force_parallel_mode
Fact — 官方简述译文:强制使用并行查询设施。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.6 |
| 在档版本 | PG9.6–15 |
| 移除版本 | PG16 |
| 引入提交 | 7c944bd90339 — Introduce a new GUC force_parallel_mode for testing purposes. |
| 提交日期 | 2016-02-07 |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.6–15 | off |
— | off |
机制详解
PG15 及以前,force_parallel_mode 会让原本安全的查询在 Gather 下运行,以便即使没有预期加速也测试并行模式行为;regress 会抑制回归测试输出差异。
它不会让不安全查询变安全,并且即使没有 worker 实际运行,也可能施加并行上下文限制;顶层 Gather 是诊断开销,不是计划 hint。
PostgreSQL 16 移除该 GUC,并以 debug_parallel_query 承担测试用途。升级配置必须删除旧名称,也不应在生产中自动开启替代项。其 user 上下文允许按会话或事务局部修改,之后执行或重新规划的工作会读取新值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 当前 PostgreSQL 不应配置 force_parallel_mode。升级时删除;即使存在后继参数,也只能用于同类受控开发测试,不能成为生产默认。 |
| OLAP | 分析负载不能成为保留已移除 force_parallel_mode 的理由;当前版本应使用受支持 EXPLAIN、日志或文档化替代项诊断。 |
| 小规格 | 现代配置中删除 force_parallel_mode。未知参数导致的启动失败与诊断开销远大于历史用途。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG15 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.6–15 未修改;OLAP: PG9.6–15 未修改;CRIT: PG9.6–15 未修改;TINY: PG9.6–15 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 force_parallel_mode 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
debug_parallel_query · max_parallel_workers_per_gather · max_parallel_workers · parallel_setup_cost
参考资料
9 - ignore_checksum_failure
Fact — 官方简述译文:校验和失败后仍继续处理。
身份
类型,- 上游 pg_settings 类型
Context,- 超级用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.3 |
| 在档版本 | PG9.3–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 96ef3b8ff1cf — Allow I/O reliability checks using 16-bit checksums |
| 提交日期 | 2013-03-22 |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.3–19 Beta 3 | off |
— | off |
机制详解
启用数据校验和时,页面校验和不匹配通常会中止当前事务;ignore_checksum_failure 改为警告,并在页面头仍合理时尝试继续。
它不会修复页面,也不能证明剩余元组有效。继续处理可能崩溃、隐藏或传播损坏;页面头损坏仍会阻止访问。
唯一可辩护用途是在存储与备份恢复手段耗尽后,从不可变副本中受控抢救数据。该模式下每次读取都是可疑证据,不代表完整性已恢复。其 superuser 上下文允许获授权会话修改,无需重启服务器。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 绝不能把 ignore_checksum_failure 当作调优或常态可用性设置。应停止写入、保全不可变副本、用尽备份/存储修复、记录预期数据损失、窄范围抢救、重建并验证后才可恢复服务。 |
| OLAP | 只读分析也不会让 ignore_checksum_failure 安全:损坏页面仍会污染结果或结构。只能在可丢弃抢救副本上使用,并明确接受数据丢失。 |
| 小规格 | 不能因为没有副本就直接启用 ignore_checksum_failure。先保全原件并寻找干净备份;该开关可能把可见损坏变成静默丢失。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.3–19 Beta 3 未修改;OLAP: PG9.3–19 Beta 3 未修改;CRIT: PG9.3–19 Beta 3 未修改;TINY: PG9.3–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 ignore_checksum_failure 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
zero_damaged_pages · ignore_invalid_pages · data_checksums · wal_consistency_checking
参考资料
10 - ignore_invalid_pages
Fact — 官方简述译文:恢复遇到无效页面引用后仍继续。
身份
类型,- 上游 pg_settings 类型
Context,- 修改后需要重启数据库
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG13 |
| 在档版本 | PG13–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 41c184bc642b — Add GUC ignore_invalid_pages. |
| 提交日期 | 2020-01-22 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG13–19 Beta 3 | off |
— | off |
机制详解
恢复期间,WAL 引用无效页面通常会触发 PANIC 并停止恢复;ignore_invalid_pages 改为记录警告并跳过该引用继续。
这是仅启动时设置,只在恢复或备库模式有效。跳过 redo 会丢数据、传播损坏,并可能让结构内部不一致,即使服务器最终能启动。
它是在保全证据并用尽正确恢复路径后的紧急抢救机制。通过它启动的服务器不能视为健康,也不能直接提升投入正常服务。其 postmaster 上下文在服务器启动时固定取值,修改后必须重启。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 绝不能把 ignore_invalid_pages 当作调优或常态可用性设置。应停止写入、保全不可变副本、用尽备份/存储修复、记录预期数据损失、窄范围抢救、重建并验证后才可恢复服务。 |
| OLAP | 只读分析也不会让 ignore_invalid_pages 安全:损坏页面仍会污染结果或结构。只能在可丢弃抢救副本上使用,并明确接受数据丢失。 |
| 小规格 | 不能因为没有副本就直接启用 ignore_invalid_pages。先保全原件并寻找干净备份;该开关可能把可见损坏变成静默丢失。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG13–19 Beta 3 未修改;OLAP: PG13–19 Beta 3 未修改;CRIT: PG13–19 Beta 3 未修改;TINY: PG13–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 ignore_invalid_pages 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
ignore_checksum_failure · zero_damaged_pages · restore_command · wal_consistency_checking
参考资料
11 - ignore_system_indexes
Fact — 官方简述译文:读取系统表时忽略系统索引。
身份
类型,- 上游 pg_settings 类型
Context,- 后端启动时固定
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.0(研究下界) |
| 在档版本 | PG9.0–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 不作断言:早于 PG9.0 研究边界 |
| 提交日期 | — |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.0–19 Beta 3 | off |
— | off |
机制详解
ignore_system_indexes 让新启动后端读取系统目录时不使用系统索引,但修改目录时仍更新索引;用于从损坏的系统索引中恢复。
其 backend 上下文在会话启动时固定,因此在现有会话内修改无效;目录扫描可能变得很慢。
该模式不会修复索引,只是提供检查数据并 REINDEX 损坏系统索引的路径。长期启用会掩盖症状并造成广泛目录开销。其 backend 上下文在连接启动时固定,现有会话不能修改。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 绝不能把 ignore_system_indexes 当作调优或常态可用性设置。应停止写入、保全不可变副本、用尽备份/存储修复、记录预期数据损失、窄范围抢救、重建并验证后才可恢复服务。 |
| OLAP | 只读分析也不会让 ignore_system_indexes 安全:损坏页面仍会污染结果或结构。只能在可丢弃抢救副本上使用,并明确接受数据丢失。 |
| 小规格 | 不能因为没有副本就直接启用 ignore_system_indexes。先保全原件并寻找干净备份;该开关可能把可见损坏变成静默丢失。 |
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 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 ignore_system_indexes 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
allow_system_table_mods · ignore_checksum_failure · zero_damaged_pages · shared_buffers
参考资料
12 - jit_debugging_support
Fact — 官方简述译文:向调试器注册 JIT 生成的函数。
身份
类型,- 上游 pg_settings 类型
Context,- 超级用户后端启动时固定
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG11 |
| 在档版本 | PG11–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 250bca7fc145 — Debugging and profiling support for LLVM JIT provider. |
| 提交日期 | 2018-03-22 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG11–19 Beta 3 | off |
— | off |
机制详解
jit_debugging_support 在 LLVM 与平台具备所需 listener 接口时,把 JIT 生成函数注册给 GDB,以改善调试器中的符号可见性。
该值在后端启动时固定,并不会开启 JIT;查询仍需 jit、可用 provider 与成本阈值才会生成代码。
注册会增加开发插桩,只在调试 JIT 内部或生成代码时有用,不是查询性能功能。其 superuser-backend 上下文在连接启动时固定,并限制可设置角色。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 jit_debugging_support 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 jit_debugging_support 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 jit_debugging_support 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG11–19 Beta 3 未修改;OLAP: PG11–19 Beta 3 未修改;CRIT: PG11–19 Beta 3 未修改;TINY: PG11–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 jit_debugging_support 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
jit · jit_above_cost · jit_dump_bitcode · jit_profiling_support · jit_expressions
参考资料
13 - jit_dump_bitcode
Fact — 官方简述译文:将 LLVM 位码写盘以便调试 JIT。
身份
类型,- 上游 pg_settings 类型
Context,- 超级用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG11 |
| 在档版本 | PG11–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | b96d550eb03c — Support for optimizing and emitting code in LLVM JIT provider. |
| 提交日期 | 2018-03-22 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG11–19 Beta 3 | off |
— | off |
机制详解
jit_dump_bitcode 会把实际执行 JIT 的查询所生成 LLVM IR/位码写到 data_directory,用于检查和复现 JIT 编译器行为。
它不会开启 JIT;没有查询越过 JIT 门槛时不会产生文件。生成物会累积、消耗磁盘,并可能包含来自执行表达式的细节。
只有严格受控的调试会话才应启用;文件需要显式收集与清理。其 superuser 上下文允许获授权会话修改,无需重启服务器。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 jit_dump_bitcode 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 jit_dump_bitcode 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 jit_dump_bitcode 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG11–19 Beta 3 未修改;OLAP: PG11–19 Beta 3 未修改;CRIT: PG11–19 Beta 3 未修改;TINY: PG11–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 jit_dump_bitcode 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
jit · jit_above_cost · jit_debugging_support · jit_profiling_support · data_directory
参考资料
14 - jit_expressions
Fact — 官方简述译文:允许 JIT 编译表达式。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- on
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG11 |
| 在档版本 | PG11–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 2a0faed9d702 — Add expression compilation support to LLVM JIT provider. |
| 提交日期 | 2018-03-20 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG11–19 Beta 3 | on |
— | on |
机制详解
jit_expressions 控制查询已经越过顶层 JIT 成本门槛后,表达式求值是否进行 JIT 编译;它本身不会激活 JIT。
关闭后表达式保持解释执行,其他符合条件的 JIT 工作仍可能发生,可用于隔离表达式代码生成的正确性或编译开销。
该设置是开发诊断项,不是常规 JIT 调优方式;生产选择应由 jit_above_cost 与顶层 jit 开关控制。其 user 上下文允许按会话或事务局部修改,之后执行或重新规划的工作会读取新值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 jit_expressions 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 jit_expressions 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 jit_expressions 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG11–19 Beta 3 未修改;OLAP: PG11–19 Beta 3 未修改;CRIT: PG11–19 Beta 3 未修改;TINY: PG11–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 jit_expressions 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
jit · jit_above_cost · jit_tuple_deforming · jit_inline_above_cost · jit_optimize_above_cost
参考资料
15 - jit_profiling_support
Fact — 官方简述译文:向 perf 分析器注册 JIT 生成的函数。
身份
类型,- 上游 pg_settings 类型
Context,- 超级用户后端启动时固定
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG11 |
| 在档版本 | PG11–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 250bca7fc145 — Debugging and profiling support for LLVM JIT provider. |
| 提交日期 | 2018-03-22 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG11–19 Beta 3 | off |
— | off |
机制详解
jit_profiling_support 在 LLVM 支持可用时输出注册数据,让 Linux perf 能把采样归因到 JIT 生成函数;文件写在服务器用户的 ~/.debug/jit 目录。
该值在后端启动时固定,并不会开启 JIT;只有越过正常门槛并生成代码的查询才受影响。
PostgreSQL 不会自动清理 profiling 文件。长时间或繁忙系统会累积可能敏感的生成物并消耗磁盘。其 superuser-backend 上下文在连接启动时固定,并限制可设置角色。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 jit_profiling_support 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 jit_profiling_support 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 jit_profiling_support 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG11–19 Beta 3 未修改;OLAP: PG11–19 Beta 3 未修改;CRIT: PG11–19 Beta 3 未修改;TINY: PG11–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 jit_profiling_support 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
jit · jit_above_cost · jit_debugging_support · jit_dump_bitcode · data_directory
参考资料
16 - jit_tuple_deforming
Fact — 官方简述译文:允许 JIT 编译元组拆解。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- on
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG11 |
| 在档版本 | PG11–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 32af96b2b118 — JIT tuple deforming in LLVM JIT provider. |
| 提交日期 | 2018-03-26 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG11–19 Beta 3 | on |
— | on |
机制详解
jit_tuple_deforming 控制查询越过主 JIT 门槛后,是否 JIT 编译从 PostgreSQL 堆元组提取属性的代码。
关闭后元组拆解保持解释执行,表达式 JIT 与其他编译仍可活动,可用于隔离该编译路径的正确性与开销。
它不是适用于每次扫描的独立性能开关;元组布局、所选列、行数、jit_above_cost 与总编译时间共同决定效果。其 user 上下文允许按会话或事务局部修改,之后执行或重新规划的工作会读取新值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 jit_tuple_deforming 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 jit_tuple_deforming 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 jit_tuple_deforming 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG11–19 Beta 3 未修改;OLAP: PG11–19 Beta 3 未修改;CRIT: PG11–19 Beta 3 未修改;TINY: PG11–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 jit_tuple_deforming 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
jit · jit_above_cost · jit_expressions · jit_inline_above_cost · cpu_tuple_cost
参考资料
17 - post_auth_delay
Fact — 官方简述译文:设置连接认证完成后的调试等待时间。
身份
类型,- 上游 pg_settings 类型
Context,- 后端启动时固定
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- 0 s
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.0(研究下界) |
| 在档版本 | PG9.0–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 不作断言:早于 PG9.0 研究边界 |
| 提交日期 | — |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.0–19 Beta 3 | 0 |
s |
0 s |
机制详解
post_auth_delay 在认证成功后暂停新后端,让开发者有时间附加调试器;零关闭等待。
该 backend 上下文值在会话启动时固定。此时认证已完成,所以休眠期间会话与服务器资源已经分配。
它会有意增加连接延迟,并在连接风暴时占用后端名额;不是节流、安全或连接池控制。其 backend 上下文在连接启动时固定,现有会话不能修改。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 post_auth_delay 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 post_auth_delay 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 post_auth_delay 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
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 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 post_auth_delay 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
pre_auth_delay · authentication_timeout · max_connections · log_connections
参考资料
18 - pre_auth_delay
Fact — 官方简述译文:设置连接认证开始前的调试等待时间。
身份
类型,- 上游 pg_settings 类型
Context,- 配置 reload 后生效
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- 0 s
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.0(研究下界) |
| 在档版本 | PG9.0–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 不作断言:早于 PG9.0 研究边界 |
| 提交日期 | — |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.0–19 Beta 3 | 0 |
s |
0 s |
机制详解
pre_auth_delay 在新服务器进程 fork 后、认证前暂停,让开发者附加调试器检查握手与认证代码;零关闭。
该 SIGHUP 设置作用于之后的新连接。进程休眠时客户端尚未认证,但服务器进程与连接名额可能已被占用。
它会有意延迟所有受影响连接,并可能放大拒绝服务风险;不能替代 authentication_timeout 或网络限流。其 SIGHUP 上下文允许通过重载配置生效,无需重启服务器。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 pre_auth_delay 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 pre_auth_delay 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 pre_auth_delay 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
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 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 pre_auth_delay 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
post_auth_delay · authentication_timeout · max_connections · trace_connection_negotiation
参考资料
19 - remove_temp_files_after_crash
Fact — 官方简述译文:控制后端崩溃后是否删除临时文件。
身份
类型,- 上游 pg_settings 类型
Context,- 配置 reload 后生效
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- on
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG14 |
| 在档版本 | PG14–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | cd91de0d1795 — Remove temporary files after backend crash |
| 提交日期 | 2021-03-18 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG14–19 Beta 3 | on |
— | on |
机制详解
后端崩溃后,remove_temp_files_after_crash 控制 PostgreSQL 是否删除失败进程遗留的临时文件;on 是正常清理行为。
关闭可保留取证材料,但反复故障会累积无用文件并写满临时文件所在文件系统。
该设置不会防止崩溃、恢复查询状态,也不会让普通临时表可重用。任何取证保留都需要显式空间监控与后续清理。其 SIGHUP 上下文允许通过重载配置生效,无需重启服务器。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 remove_temp_files_after_crash 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 remove_temp_files_after_crash 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 remove_temp_files_after_crash 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
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 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 remove_temp_files_after_crash 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
temp_file_limit · temp_tablespaces · log_temp_files · send_abort_for_crash
参考资料
20 - send_abort_for_crash
Fact — 官方简述译文:后端崩溃后向其他子进程发送 SIGABRT 而非 SIGQUIT。
身份
类型,- 上游 pg_settings 类型
Context,- 配置 reload 后生效
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG16 |
| 在档版本 | PG16–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 51b5834cd53f — Provide options for postmaster to kill child processes with SIGABRT. |
| 提交日期 | 2022-11-21 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG16–19 Beta 3 | off |
— | off |
机制详解
一个后端崩溃后,postmaster 通常用 SIGQUIT 要求其他子进程退出;send_abort_for_crash 改发 SIGABRT,使这些同伴进程通常生成 core dump。
dump 捕获事故附近的同伴状态,不只是最初崩溃进程;反复崩溃可能因此产生大量大型 core 文件。
PostgreSQL 不自动清理 core。启用前必须配置 OS core 限制、存储容量、隐私保护与收集流程。其 SIGHUP 上下文允许通过重载配置生效,无需重启服务器。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 send_abort_for_crash 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 send_abort_for_crash 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 send_abort_for_crash 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG16–19 Beta 3 未修改;OLAP: PG16–19 Beta 3 未修改;CRIT: PG16–19 Beta 3 未修改;TINY: PG16–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 send_abort_for_crash 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
send_abort_for_kill · remove_temp_files_after_crash · log_error_verbosity · data_directory
参考资料
21 - send_abort_for_kill
Fact — 官方简述译文:终止卡住的子进程时发送 SIGABRT 而非 SIGKILL。
身份
类型,- 上游 pg_settings 类型
Context,- 配置 reload 后生效
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG16 |
| 在档版本 | PG16–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 51b5834cd53f — Provide options for postmaster to kill child processes with SIGABRT. |
| 提交日期 | 2022-11-21 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG16–19 Beta 3 | off |
— | off |
机制详解
子进程收到 SIGQUIT 五秒后仍未退出时,postmaster 通常升级为 SIGKILL;send_abort_for_kill 改用 SIGABRT,使卡住进程通常写 core dump。
SIGABRT 提供取证状态,但会消耗时间与磁盘,可能延迟崩溃恢复;在所有故障模式下也不保证像 SIGKILL 一样迅速终止。
PostgreSQL 不清理生成的 core;OS 策略与监控必须防止反复卡死进程写满存储。其 SIGHUP 上下文允许通过重载配置生效,无需重启服务器。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 send_abort_for_kill 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 send_abort_for_kill 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 send_abort_for_kill 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG16–19 Beta 3 未修改;OLAP: PG16–19 Beta 3 未修改;CRIT: PG16–19 Beta 3 未修改;TINY: PG16–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 send_abort_for_kill 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
send_abort_for_crash · remove_temp_files_after_crash · log_error_verbosity · data_directory
参考资料
22 - trace_connection_negotiation
Fact — 官方简述译文:记录认证前连接握手的详细信息。
身份
类型,- 上游 pg_settings 类型
Context,- 修改后需要重启数据库
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG17 |
| 在档版本 | PG17–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 705843d294d5 — Enhance libpq encryption negotiation tests with new GUC |
| 提交日期 | 2024-04-08 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG17–19 Beta 3 | off |
— | off |
机制详解
trace_connection_negotiation 记录认证前连接协商路径的细节,可在普通认证日志尚不可用时为协议、加密与握手调试提供证据。
它是服务器启动参数,启用后会在下次重启前影响全集群后续连接握手;不会改变认证规则,也不会让失败协商自动成功。
握手日志可能量大,并暴露网络或客户端能力细节。应在受控复现中使用并保护生成的服务器日志。其 postmaster 上下文在服务器启动时固定取值,修改后必须重启。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 trace_connection_negotiation 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 trace_connection_negotiation 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 trace_connection_negotiation 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG17–19 Beta 3 未修改;OLAP: PG17–19 Beta 3 未修改;CRIT: PG17–19 Beta 3 未修改;TINY: PG17–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 trace_connection_negotiation 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
log_connections · authentication_timeout · ssl · pre_auth_delay · log_error_verbosity
参考资料
23 - trace_notify
Fact — 官方简述译文:为 LISTEN 和 NOTIFY 生成调试输出。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.0(研究下界) |
| 在档版本 | PG9.0–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 不作断言:早于 PG9.0 研究边界 |
| 提交日期 | — |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.0–19 Beta 3 | off |
— | off |
机制详解
trace_notify 为 LISTEN 与 NOTIFY 输出大量内部调试消息;只有 client_min_messages 或 log_min_messages 包含 DEBUG1 或更低级别时才可见。
它追踪实现活动,并不是通知 payload 的持久审计;额外消息量可能远大于应用通知流。
应只在受控会话中复现队列与投递 bug。队列容量与清理由 max_notify_queue_pages 和监听者事务行为另行控制。其 user 上下文允许按会话或事务局部修改,之后执行或重新规划的工作会读取新值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 trace_notify 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 trace_notify 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 trace_notify 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
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 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 trace_notify 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
max_notify_queue_pages · notify_buffers · client_min_messages · log_min_messages · track_activities
参考资料
24 - trace_recovery_messages
Fact — 官方简述译文:控制恢复相关调试消息的日志级别。
身份
类型,- 上游 pg_settings 类型
Context,- 配置 reload 后生效
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- log
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.0(研究下界) |
| 在档版本 | PG9.0–16 |
| 移除版本 | PG17 |
| 引入提交 | 不作断言:早于 PG9.0 研究边界 |
| 提交日期 | — |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.0–16 | log |
— | log |
机制详解
PG16 及以前,trace_recovery_messages 会把达到所选严重级别的恢复 DEBUG 消息重新映射为 LOG,使通常隐藏的恢复内部信息在测试时可见。
它只改变消息可见性,不改变恢复决策、WAL 重放顺序或持久性;详细恢复日志可能极大并影响时序。
PostgreSQL 17 移除该参数。升级配置必须删除;当前恢复诊断应使用受支持日志、进度与 WAL 检查工具。其 SIGHUP 上下文允许通过重载配置生效,无需重启服务器。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 当前 PostgreSQL 不应配置 trace_recovery_messages。升级时删除;即使存在后继参数,也只能用于同类受控开发测试,不能成为生产默认。 |
| OLAP | 分析负载不能成为保留已移除 trace_recovery_messages 的理由;当前版本应使用受支持 EXPLAIN、日志或文档化替代项诊断。 |
| 小规格 | 现代配置中删除 trace_recovery_messages。未知参数导致的启动失败与诊断开销远大于历史用途。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG16 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–16 未修改;OLAP: PG9.0–16 未修改;CRIT: PG9.0–16 未修改;TINY: PG9.0–16 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 trace_recovery_messages 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
log_min_messages · restore_command · recovery_min_apply_delay · wal_consistency_checking
参考资料
25 - trace_sort
Fact — 官方简述译文:输出排序操作的资源使用信息。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.0(研究下界) |
| 在档版本 | PG9.0–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 不作断言:早于 PG9.0 研究边界 |
| 提交日期 | — |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.0–19 Beta 3 | off |
— | off |
机制详解
trace_sort 为排序操作输出内部资源消息,包括内存、run 生成、归并轮次与计时细节,主要供 PostgreSQL 开发者使用。
它是诊断日志,不等同于 EXPLAIN 的 Sort Method 或 log_temp_files;在排序密集负载上会产生大量消息。
该开关不会改变 work_mem、排序算法或落盘阈值。应限定在复现场景,并配合能够实际捕获输出的日志级别。其 user 上下文允许按会话或事务局部修改,之后执行或重新规划的工作会读取新值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 trace_sort 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 trace_sort 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 trace_sort 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
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 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 trace_sort 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
work_mem · log_temp_files · enable_sort · temp_file_limit · log_min_messages
参考资料
26 - wal_consistency_checking
Fact — 官方简述译文:设置要执行 WAL 一致性检查的资源管理器。
身份
类型,- 上游 pg_settings 类型
Context,- 超级用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- empty string
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG10 |
| 在档版本 | PG10–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | a507b86900f6 — Add WAL consistency checking facility. |
| 提交日期 | 2017-02-08 |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG10–19 Beta 3 | "" |
— | empty string |
机制详解
wal_consistency_checking 指定要验证 redo 例程的 WAL 资源管理器。对选中记录,PostgreSQL 会加入完整页面镜像,并在重放后把结果缓冲区与镜像比较。
意外差异会以致命错误终止恢复;hint bit 等已知非确定差异会特殊处理。all 会启用所有受支持资源管理器。
附加完整页面镜像会大幅增加 WAL 量与重放工作。该功能查找 redo 实现 bug,不是通用磁盘校验和、备份验证或损坏修复工具。其 superuser 上下文允许获授权会话修改,无需重启服务器。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要用 wal_consistency_checking 调优生产 OLTP。只在有负责人、日志/磁盘预算、回滚条件与取证计划的限时复现中启用,完成后立即恢复默认。 |
| OLAP | 长分析任务会放大 wal_consistency_checking 的调试开销与生成物。应优先使用标准 EXPLAIN 与统计,并把开发实验与普通用户隔离。 |
| 小规格 | 让 wal_consistency_checking 保持上游默认。小主机没有足够 CPU、磁盘、连接与日志余量承担开发插桩,更不适合长时间开启。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG10–19 Beta 3 未修改;OLAP: PG10–19 Beta 3 未修改;CRIT: PG10–19 Beta 3 未修改;TINY: PG10–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 wal_consistency_checking 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
full_page_writes · wal_log_hints · ignore_invalid_pages · ignore_checksum_failure · wal_level
参考资料
27 - zero_damaged_pages
Fact — 官方简述译文:遇到损坏页面头时把内存中的页面清零后继续。
身份
类型,- 上游 pg_settings 类型
Context,- 超级用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.0(研究下界) |
| 在档版本 | PG9.0–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 不作断言:早于 PG9.0 研究边界 |
| 提交日期 | — |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.0–19 Beta 3 | off |
— | off |
机制详解
PostgreSQL 检测到损坏页面头时,zero_damaged_pages 会在内存中替换为全零页、发出警告并继续;原页面上的每一行都会从抢救读取中丢失。
零页不会自动强制写盘,因此继续使用该关系会产生不一致行为;抢救后必须重建表或索引。
这是备份与存储恢复手段耗尽后的最后数据提取开关。必须在已保全副本上窄范围使用,并在完成后立即关闭。其 superuser 上下文允许获授权会话修改,无需重启服务器。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 绝不能把 zero_damaged_pages 当作调优或常态可用性设置。应停止写入、保全不可变副本、用尽备份/存储修复、记录预期数据损失、窄范围抢救、重建并验证后才可恢复服务。 |
| OLAP | 只读分析也不会让 zero_damaged_pages 安全:损坏页面仍会污染结果或结构。只能在可丢弃抢救副本上使用,并明确接受数据丢失。 |
| 小规格 | 不能因为没有副本就直接启用 zero_damaged_pages。先保全原件并寻找干净备份;该开关可能把可见损坏变成静默丢失。 |
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 专属理由。
常见坑
- 限时诊断或恢复任务结束后仍让 zero_damaged_pages 保持启用。
- 在生产数据的唯一副本上进行实验。
- 低估日志、core、临时文件、WAL、CPU 或连接名额放大。
- 把服务器能启动或查询能完成误当作数据与行为正确的证明。
关联参数
ignore_checksum_failure · ignore_invalid_pages · data_checksums · wal_consistency_checking