这是本节的多页打印视图。 .
版本与平台兼容
- 1: allow_alter_system
- 2: array_nulls
- 3: backslash_quote
- 4: default_with_oids
- 5: escape_string_warning
- 6: lo_compat_privileges
- 7: operator_precedence_warning
- 8: quote_all_identifiers
- 9: sql_inheritance
- 10: standard_conforming_strings
- 11: synchronize_seqscans
- 12: transform_null_equals
条目 URL 保持扁平;本分类仅用于侧栏与浏览组织。
1 - allow_alter_system
Fact — 官方简述译文:允许执行 ALTER SYSTEM 命令。
身份
类型,- 上游 pg_settings 类型
Context,- 配置 reload 后生效
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- on
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG17 |
| 在档版本 | PG17–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | d3ae2a24f265 — Add allow_alter_system GUC. |
| 提交日期 | 2024-03-29 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG17–19 Beta 3 | on |
— | on |
机制详解
允许执行 ALTER SYSTEM 命令。重新加载配置即可应用新值;已经开始的工作不会被追溯改变。
关闭后,PostgreSQL 会在 ALTER SYSTEM 改写 postgresql.auto.conf 前拒绝该命令。它既不会删除 auto.conf 现有条目,也无法阻止操作系统管理员改文件,因此这是 SQL 管理边界而不是文件系统安全边界。
应把 allow_alter_system 与 config_file、data_directory、hba_file 一起监控和变更。先在对应角色与真实负载上验证,再按其 sighup context 选择会话修改、reload 或 restart;历史默认值并不等于当前有效值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 由配置管理器拥有 postgresql.conf/auto.conf 的托管环境可关闭它,减少 SQL 管理面;同时审计现有 auto.conf,并限制文件与超级用户权限。 |
| OLAP | 策略与 OLTP 相同。若批处理平台依赖 ALTER SYSTEM,先迁移到声明式配置接口,避免任务在 reload 后悄然失败。 |
| 小规格 | 单管理员实例可保持默认,但不要把 ALTER SYSTEM 当作变更审计系统;保留配置版本、回滚与重启/reload 记录。 |
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 专属理由。
常见坑
- 把兼容开关当作永久方案而不修复客户端。
- 只在一个会话测试,却全局部署到所有应用。
- 混淆解析兼容性与数据或安全兼容性。
- 升级后忘记清理已经不需要的覆盖。
关联参数
config_file · data_directory · hba_file · ident_file · external_pid_file · transform_null_equals
参考资料
2 - array_nulls
Fact — 官方简述译文:允许在数组输入中使用 NULL 元素。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- on
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.0(研究下界) |
| 在档版本 | PG9.0–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 不作断言:早于 PG9.0 研究边界 |
| 提交日期 | — |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.0–19 Beta 3 | on |
— | on |
机制详解
允许在数组输入中使用 NULL 元素。它可在会话级修改,因此不同会话可能采用不同的行为。
该兼容开关改变旧客户端或旧 SQL 的解析/输出行为,而不是执行计划的常规性能旋钮。长期方案应修复客户端与 SQL,并在升级测试中移除兼容依赖。
应把 array_nulls 与 backslash_quote、escape_string_warning、standard_conforming_strings 一起监控和变更。先在对应角色与真实负载上验证,再按其 user context 选择会话修改、reload 或 restart;历史默认值并不等于当前有效值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 保持现代默认并修复依赖 array_nulls 的旧客户端/SQL;先在会话级做迁移测试,不要把兼容开关永久设为集群全局策略。 |
| OLAP | 重点回归 ETL、生成 SQL 与旧驱动,因为它们常隐藏解析/引用假设;性能差异通常不是调该开关的理由。 |
| 小规格 | 没有遗留需求就保持默认。若临时启用,记录责任人、受影响连接与移除日期。 |
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 专属理由。
常见坑
- 把兼容开关当作永久方案而不修复客户端。
- 只在一个会话测试,却全局部署到所有应用。
- 混淆解析兼容性与数据或安全兼容性。
- 升级后忘记清理已经不需要的覆盖。
关联参数
backslash_quote · escape_string_warning · standard_conforming_strings · transform_null_equals · quote_all_identifiers · default_with_oids
参考资料
3 - backslash_quote
Fact — 官方简述译文:设置字符串字面量中是否允许使用反斜杠转义的单引号(')。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- safe_encoding
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.0(研究下界) |
| 在档版本 | PG9.0–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 不作断言:早于 PG9.0 研究边界 |
| 提交日期 | — |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.0–19 Beta 3 | safe_encoding |
— | safe_encoding |
机制详解
设置字符串字面量中是否允许使用反斜杠转义的单引号(')。它可在会话级修改,因此不同会话可能采用不同的行为。
该兼容开关改变旧客户端或旧 SQL 的解析/输出行为,而不是执行计划的常规性能旋钮。长期方案应修复客户端与 SQL,并在升级测试中移除兼容依赖。
应把 backslash_quote 与 array_nulls、escape_string_warning、standard_conforming_strings 一起监控和变更。先在对应角色与真实负载上验证,再按其 user context 选择会话修改、reload 或 restart;历史默认值并不等于当前有效值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 保持现代默认并修复依赖 backslash_quote 的旧客户端/SQL;先在会话级做迁移测试,不要把兼容开关永久设为集群全局策略。 |
| OLAP | 重点回归 ETL、生成 SQL 与旧驱动,因为它们常隐藏解析/引用假设;性能差异通常不是调该开关的理由。 |
| 小规格 | 没有遗留需求就保持默认。若临时启用,记录责任人、受影响连接与移除日期。 |
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 专属理由。
常见坑
- 把兼容开关当作永久方案而不修复客户端。
- 只在一个会话测试,却全局部署到所有应用。
- 混淆解析兼容性与数据或安全兼容性。
- 升级后忘记清理已经不需要的覆盖。
关联参数
array_nulls · escape_string_warning · standard_conforming_strings · transform_null_equals · quote_all_identifiers · default_with_oids
参考资料
4 - default_with_oids
Fact — 官方简述译文:默认创建带 OID 的新表。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.0(研究下界) |
| 在档版本 | PG9.0–11 |
| 移除版本 | PG12 |
| 引入提交 | 不作断言:早于 PG9.0 研究边界 |
| 提交日期 | — |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.0–11 | off |
— | off |
机制详解
默认创建带 OID 的新表。该参数在 PG11 仍存在,并从 PG12 起不再被识别。PostgreSQL 12 移除了用户表 OID;应改用 identity 列、序列或其他显式主键。
该参数存在时,会改变未显式写 WITH/WITHOUT OIDS 的 CREATE TABLE。表 OID 既不是稳定业务键,也不保证全局唯一;PostgreSQL 12 随用户表 OID 一并移除该功能。
升级前应联合检查 lo_compat_privileges、operator_precedence_warning、synchronize_seqscans,从配置、ALTER SYSTEM、角色/数据库设置和自动化模板中删除旧名,并先验证替代机制再启动 PG12+。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要在 PG12+ 调优或继续下发 default_with_oids。PostgreSQL 12 移除了用户表 OID;应改用 identity 列、序列或其他显式主键。升级前扫描所有配置层并做业务回归。 |
| OLAP | 迁移方案与 OLTP 相同;另外在长批处理、备库或大对象/扩展工作流中验证新机制,不要假定删除旧开关会保留旧行为。 |
| 小规格 | 直接删除旧配置并采用受支持替代项;若没有真实兼容需求,不要用脚本伪造旧行为。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG11 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–11 未修改;OLAP: PG9.0–11 未修改;CRIT: PG9.0–11 未修改;TINY: PG9.0–11 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 在 PG12+ 配置中继续下发未知参数 default_with_oids。
- 只删除参数名,却未迁移依赖它的应用行为。
- 把历史默认值当作新版本替代机制的默认值。
- 遗漏 ALTER SYSTEM、角色/数据库设置或自动化模板中的旧条目。
关联参数
lo_compat_privileges · operator_precedence_warning · synchronize_seqscans · standard_conforming_strings · array_nulls · backslash_quote
参考资料
5 - escape_string_warning
Fact — 官方简述译文:当普通字符串字面量含反斜杠转义时发出警告。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- on
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.0(研究下界) |
| 在档版本 | PG9.0–18 |
| 移除版本 | PG19 Beta 3 |
| 引入提交 | 不作断言:早于 PG9.0 研究边界 |
| 提交日期 | — |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.0–18 | on |
— | on |
机制详解
当普通字符串字面量含反斜杠转义时发出警告。它可在会话级修改,因此不同会话可能采用不同的行为。
该兼容开关改变旧客户端或旧 SQL 的解析/输出行为,而不是执行计划的常规性能旋钮。长期方案应修复客户端与 SQL,并在升级测试中移除兼容依赖。
应把 escape_string_warning 与 array_nulls、backslash_quote、standard_conforming_strings 一起监控和变更。先在对应角色与真实负载上验证,再按其 user context 选择会话修改、reload 或 restart;历史默认值并不等于当前有效值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 保持现代默认并修复依赖 escape_string_warning 的旧客户端/SQL;先在会话级做迁移测试,不要把兼容开关永久设为集群全局策略。 |
| OLAP | 重点回归 ETL、生成 SQL 与旧驱动,因为它们常隐藏解析/引用假设;性能差异通常不是调该开关的理由。 |
| 小规格 | 没有遗留需求就保持默认。若临时启用,记录责任人、受影响连接与移除日期。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG18 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–18 未修改;OLAP: PG9.0–18 未修改;CRIT: PG9.0–18 未修改;TINY: PG9.0–18 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 把兼容开关当作永久方案而不修复客户端。
- 只在一个会话测试,却全局部署到所有应用。
- 混淆解析兼容性与数据或安全兼容性。
- 升级后忘记清理已经不需要的覆盖。
关联参数
array_nulls · backslash_quote · standard_conforming_strings · transform_null_equals · quote_all_identifiers · default_with_oids
参考资料
6 - lo_compat_privileges
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 |
机制详解
启用大对象权限检查的向后兼容模式。超级用户或获授 SET 权限的角色可在相应的会话或配置作用域中修改它。
该兼容开关改变旧客户端或旧 SQL 的解析/输出行为,而不是执行计划的常规性能旋钮。长期方案应修复客户端与 SQL,并在升级测试中移除兼容依赖。
应把 lo_compat_privileges 与 default_with_oids、operator_precedence_warning、synchronize_seqscans 一起监控和变更。先在对应角色与真实负载上验证,再按其 superuser context 选择会话修改、reload 或 restart;历史默认值并不等于当前有效值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 保持现代默认并修复依赖 lo_compat_privileges 的旧客户端/SQL;先在会话级做迁移测试,不要把兼容开关永久设为集群全局策略。 |
| OLAP | 重点回归 ETL、生成 SQL 与旧驱动,因为它们常隐藏解析/引用假设;性能差异通常不是调该开关的理由。 |
| 小规格 | 没有遗留需求就保持默认。若临时启用,记录责任人、受影响连接与移除日期。 |
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 专属理由。
常见坑
- 把兼容开关当作永久方案而不修复客户端。
- 只在一个会话测试,却全局部署到所有应用。
- 混淆解析兼容性与数据或安全兼容性。
- 升级后忘记清理已经不需要的覆盖。
关联参数
default_with_oids · operator_precedence_warning · synchronize_seqscans · standard_conforming_strings · array_nulls · backslash_quote
参考资料
7 - operator_precedence_warning
Fact — 官方简述译文:对自 PostgreSQL 9.4 起含义发生变化的表达式发出警告。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.5 |
| 在档版本 | PG9.5–13 |
| 移除版本 | PG14 |
| 引入提交 | c6b3c939b7e0 — Make operator precedence follow the SQL standard more closely. |
| 提交日期 | 2015-03-11 |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.5–13 | off |
— | off |
机制详解
对自 PostgreSQL 9.4 起含义发生变化的表达式发出警告。该参数在 PG13 仍存在,并从 PG14 起不再被识别。PostgreSQL 14 移除了这一迁移警告;应给有歧义的表达式显式加括号,并在目标版本上测试。
它曾为 PostgreSQL 9.5 改变结合规则的表达式发出迁移警告,并不会恢复旧优先级。参数移除后,可靠方案是显式括号与回归测试。
升级前应联合检查 default_with_oids、lo_compat_privileges、synchronize_seqscans,从配置、ALTER SYSTEM、角色/数据库设置和自动化模板中删除旧名,并先验证替代机制再启动 PG14+。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要在 PG14+ 调优或继续下发 operator_precedence_warning。PostgreSQL 14 移除了这一迁移警告;应给有歧义的表达式显式加括号,并在目标版本上测试。升级前扫描所有配置层并做业务回归。 |
| OLAP | 迁移方案与 OLTP 相同;另外在长批处理、备库或大对象/扩展工作流中验证新机制,不要假定删除旧开关会保留旧行为。 |
| 小规格 | 直接删除旧配置并采用受支持替代项;若没有真实兼容需求,不要用脚本伪造旧行为。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG13 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.5–13 未修改;OLAP: PG9.5–13 未修改;CRIT: PG9.5–13 未修改;TINY: PG9.5–13 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 在 PG14+ 配置中继续下发未知参数 operator_precedence_warning。
- 只删除参数名,却未迁移依赖它的应用行为。
- 把历史默认值当作新版本替代机制的默认值。
- 遗漏 ALTER SYSTEM、角色/数据库设置或自动化模板中的旧条目。
关联参数
default_with_oids · lo_compat_privileges · synchronize_seqscans · standard_conforming_strings · array_nulls · backslash_quote
参考资料
8 - quote_all_identifiers
Fact — 官方简述译文:生成 SQL 片段时引用所有标识符。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- off
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.1 |
| 在档版本 | PG9.1–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | ce68df468a41 — Add options to force quoting of all identifiers. |
| 提交日期 | 2010-07-22 |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.1–19 Beta 3 | off |
— | off |
机制详解
生成 SQL 片段时引用所有标识符。它可在会话级修改,因此不同会话可能采用不同的行为。
该兼容开关改变旧客户端或旧 SQL 的解析/输出行为,而不是执行计划的常规性能旋钮。长期方案应修复客户端与 SQL,并在升级测试中移除兼容依赖。
应把 quote_all_identifiers 与 array_nulls、backslash_quote、escape_string_warning 一起监控和变更。先在对应角色与真实负载上验证,再按其 user context 选择会话修改、reload 或 restart;历史默认值并不等于当前有效值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 保持现代默认并修复依赖 quote_all_identifiers 的旧客户端/SQL;先在会话级做迁移测试,不要把兼容开关永久设为集群全局策略。 |
| OLAP | 重点回归 ETL、生成 SQL 与旧驱动,因为它们常隐藏解析/引用假设;性能差异通常不是调该开关的理由。 |
| 小规格 | 没有遗留需求就保持默认。若临时启用,记录责任人、受影响连接与移除日期。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.1–19 Beta 3 未修改;OLAP: PG9.1–19 Beta 3 未修改;CRIT: PG9.1–19 Beta 3 未修改;TINY: PG9.1–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 把兼容开关当作永久方案而不修复客户端。
- 只在一个会话测试,却全局部署到所有应用。
- 混淆解析兼容性与数据或安全兼容性。
- 升级后忘记清理已经不需要的覆盖。
关联参数
array_nulls · backslash_quote · escape_string_warning · standard_conforming_strings · transform_null_equals · default_with_oids
参考资料
9 - sql_inheritance
Fact — 官方简述译文:让多种 SQL 命令默认包含继承子表。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- on
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.0(研究下界) |
| 在档版本 | PG9.0–9.6 |
| 移除版本 | PG10 |
| 引入提交 | 不作断言:早于 PG9.0 研究边界 |
| 提交日期 | — |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.0–9.6 | on |
— | on |
机制详解
sql_inheritance:让多种 SQL 命令默认包含继承子表。它可以按会话修改,便于在不影响全部负载的前提下比较计划或行为。 本站在 PG9.0–9.6 实测到它;boot_val 是编译或初始化基线,并不能证明某个运行集群的当前有效值。
启用时,多种命令会默认作用于继承后代,除非显式写 ONLY。PG10 移除了该兼容开关:现代 SQL 用 ONLY 排除后代,而声明式分区裁剪与 constraint_exclusion 决定实际扫描哪些子关系。
应与 constraint_exclusion、enable_partition_pruning、search_path、default_table_access_method 一起理解。请在目标服务器检查 SHOW 与 pg_settings,确认 source 和 pending_restart,并在修改前后对比真实负载、日志和资源指标。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 不要把这个已退出的名称加入现代 OLTP 配置。应把原意迁移到文档给出的后继参数,在连接与写并发下验证,并清理仍会输出旧名称的自动化。 |
| OLAP | 升级分析型环境前应盘点所有生成配置,把旧控制映射到后继项,并比较执行计划、吞吐、WAL 或日志行为;不能假设旧数值可直接搬用。 |
| 小规格 | 记录旧覆盖存在的原因后将其删除。小节点应先采用后继参数默认值,实测后再调整;未知的启动参数可能直接阻止服务器启动。 |
Pigsty 取值
以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG9.6 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。
| 模板 | 有效值 | 与上游 boot 比较 | 源表达式 |
|---|---|---|---|
| OLTP | 未修改 | — | — |
| OLAP | 未修改 | — | — |
| CRIT | 未修改 | — | — |
| TINY | 未修改 | — | — |
Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–9.6 未修改;OLAP: PG9.0–9.6 未修改;CRIT: PG9.0–9.6 未修改;TINY: PG9.0–9.6 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。
常见坑
- 把 sql_inheritance 的实测 boot_val 当成初始化后或托管集群当前有效值的证明。
- 忽略 pg_settings 报告的 user context,误以为修改会立即生效。
- 孤立修改该参数,没有检查关联上限、可观测性和回滚路径。
- 把已移除名称复制到现代 postgresql.conf,而没有迁移到文档给出的后继参数。
关联参数
constraint_exclusion · enable_partition_pruning · search_path · default_table_access_method
参考资料
10 - standard_conforming_strings
Fact — 官方简述译文:使普通单引号字符串中的反斜杠按字面处理。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- on
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.0(研究下界) |
| 在档版本 | PG9.0–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 不作断言:早于 PG9.0 研究边界 |
| 提交日期 | — |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.0 | off |
— | off |
| PG9.1–19 Beta 3 | on |
— | on |
机制详解
使普通单引号字符串中的反斜杠按字面处理。它可在会话级修改,因此不同会话可能采用不同的行为。
该兼容开关改变旧客户端或旧 SQL 的解析/输出行为,而不是执行计划的常规性能旋钮。长期方案应修复客户端与 SQL,并在升级测试中移除兼容依赖。
应把 standard_conforming_strings 与 array_nulls、backslash_quote、escape_string_warning 一起监控和变更。先在对应角色与真实负载上验证,再按其 user context 选择会话修改、reload 或 restart;历史默认值并不等于当前有效值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 保持现代默认并修复依赖 standard_conforming_strings 的旧客户端/SQL;先在会话级做迁移测试,不要把兼容开关永久设为集群全局策略。 |
| OLAP | 重点回归 ETL、生成 SQL 与旧驱动,因为它们常隐藏解析/引用假设;性能差异通常不是调该开关的理由。 |
| 小规格 | 没有遗留需求就保持默认。若临时启用,记录责任人、受影响连接与移除日期。 |
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 专属理由。
常见坑
- 把兼容开关当作永久方案而不修复客户端。
- 只在一个会话测试,却全局部署到所有应用。
- 混淆解析兼容性与数据或安全兼容性。
- 升级后忘记清理已经不需要的覆盖。
关联参数
array_nulls · backslash_quote · escape_string_warning · transform_null_equals · quote_all_identifiers · default_with_oids
参考资料
11 - synchronize_seqscans
Fact — 官方简述译文:启用同步顺序扫描。
身份
类型,- 上游 pg_settings 类型
Context,- 普通用户可在运行时修改
单位,- 原始单位
范围,- 最后在档版本的原始上下限
枚举值,- 非枚举类型记为 —
分类,- 上游分类
最后 boot 值,- on
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG9.0(研究下界) |
| 在档版本 | PG9.0–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 不作断言:早于 PG9.0 研究边界 |
| 提交日期 | — |
| Discussion | — |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG9.0–19 Beta 3 | on |
— | on |
机制详解
启用同步顺序扫描。它可在会话级修改,因此不同会话可能采用不同的行为。
该兼容开关改变旧客户端或旧 SQL 的解析/输出行为,而不是执行计划的常规性能旋钮。长期方案应修复客户端与 SQL,并在升级测试中移除兼容依赖。
应把 synchronize_seqscans 与 default_with_oids、lo_compat_privileges、operator_precedence_warning 一起监控和变更。先在对应角色与真实负载上验证,再按其 user context 选择会话修改、reload 或 restart;历史默认值并不等于当前有效值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 通常保持开启,让并发大表扫描共享缓存足迹;需要确定行序时必须写 ORDER BY,不能靠关闭该参数。 |
| OLAP | 分析负载最可能受益于 synchronized scans。只在可重复基准显示共享扫描位置损害局部性时做会话级试验。 |
| 小规格 | 保持默认;数据完全驻留缓存或几乎没有并发扫描时,它通常既无需调也不会成为瓶颈。 |
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 专属理由。
常见坑
- 把兼容开关当作永久方案而不修复客户端。
- 只在一个会话测试,却全局部署到所有应用。
- 混淆解析兼容性与数据或安全兼容性。
- 升级后忘记清理已经不需要的覆盖。
关联参数
default_with_oids · lo_compat_privileges · operator_precedence_warning · standard_conforming_strings · array_nulls · backslash_quote
参考资料
12 - transform_null_equals
Fact — 官方简述译文:将 expr = NULL 视为 expr IS NULL。
身份
类型,- 上游 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 |
机制详解
将 expr = NULL 视为 expr IS NULL。它可在会话级修改,因此不同会话可能采用不同的行为。
该兼容开关改变旧客户端或旧 SQL 的解析/输出行为,而不是执行计划的常规性能旋钮。长期方案应修复客户端与 SQL,并在升级测试中移除兼容依赖。
应把 transform_null_equals 与 array_nulls、backslash_quote、escape_string_warning 一起监控和变更。先在对应角色与真实负载上验证,再按其 user context 选择会话修改、reload 或 restart;历史默认值并不等于当前有效值。
调优建议
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 保持现代默认并修复依赖 transform_null_equals 的旧客户端/SQL;先在会话级做迁移测试,不要把兼容开关永久设为集群全局策略。 |
| OLAP | 重点回归 ETL、生成 SQL 与旧驱动,因为它们常隐藏解析/引用假设;性能差异通常不是调该开关的理由。 |
| 小规格 | 没有遗留需求就保持默认。若临时启用,记录责任人、受影响连接与移除日期。 |
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 专属理由。
常见坑
- 把兼容开关当作永久方案而不修复客户端。
- 只在一个会话测试,却全局部署到所有应用。
- 混淆解析兼容性与数据或安全兼容性。
- 升级后忘记清理已经不需要的覆盖。
关联参数
array_nulls · backslash_quote · escape_string_warning · standard_conforming_strings · quote_all_identifiers · allow_alter_system