跳转到主要内容

1 - application_name

application_name 定义在统计信息和日志中报告的应用名称。
说明

Fact — 官方简述译文:设置在统计信息和日志中报告的应用名称。

身份

类型 , string
上游 pg_settings 类型
Context , user
普通用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 boot 值 , ""
empty string

生命周期

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

默认值变迁

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

机制详解

application_name 是客户端提供的会话元数据,通常在启动包中设置,也可稍后用 SET 修改。它出现在 pg_stat_activity 与 CSV 日志中,并可通过 log_line_prefix 的 %a 写入文本日志。

该值短于 NAMEDATALEN 字节(标准构建为 64 个字符)。PostgreSQL 接受可打印 ASCII,其他字符显示为 C 风格十六进制转义。由于截断与转义,日志消费者不能假定显示值与应用原始字符串完全一致。

它属于 USER 上下文标签,不是经过认证的身份:任何获授权客户端都可声明误导值,池化会话也可能保留或覆盖它。应与已认证用户、数据库、会话 ID、远端点,以及受控连接池签出/重置行为关联。

调优建议

提示

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

场景 建议
OLTP 要求每个服务与连接池在签出时设置短小、稳定、无秘密的 application_name,并在复用前重置。使用受控命名约定,但绝不能只依据该值授权或审计。
OLAP 设置稳定的作业或工具族标签,把运行级高基数身份放到其他位置。用已认证角色与会话 ID 关联长分析会话。
小规格 标签保持简短有用,节点规格与此无关。不要把租户 ID、令牌、SQL 或无界请求标识塞入这一 64 字符且受客户端控制的字段。

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 专属理由。

常见坑

  • 把 application_name 当作已认证身份,或单独用于授权、计费与审计归属。
  • 超过 NAMEDATALEN,因截断悄然丢失具有区分度的后缀。
  • 误以为任意 Unicode 会原样保留,而不是转义为可打印的 C 风格十六进制序列。
  • 在日志与 pg_stat_activity 中泄漏秘密或制造无界基数,或在连接池中未重置该值。

cluster_name · update_process_title · log_line_prefix · log_timezone · log_hostname

参考资料

2 - cluster_name

cluster_name 定义显示在进程标题中的集群名称。
说明

Fact — 官方简述译文:设置显示在进程标题中的集群名称。

身份

类型 , string
上游 pg_settings 类型
Context , postmaster
修改后需要重启数据库
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / Process Title
上游分类
最后 boot 值 , ""
empty string

生命周期

Fact
首次观测 PG9.5
在档版本 PG9.5–19 Beta 3
移除版本
引入提交 51adcaa0df81 — Add cluster_name GUC which is included in process titles if set.
提交日期 2014-06-29
Discussion

默认值变迁

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

机制详解

cluster_name:设置显示在进程标题中的集群名称。它是写入进程标题的运维标签,可区分同一主机上的多个集群,但不是数据库标识符。

cluster_name 属于 POSTMASTER 上下文:PostgreSQL 在服务器启动时读取它,重新加载配置或会话 SET 都不能使新值生效。

进程标题与 application_name、cluster_name、pg_stat_activity、log_line_prefix 相互补充,使操作系统观察能够关联数据库活动。

调优建议

提示

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

场景 建议
OLTP 除非分析证明确有显著开销,否则保持 cluster_name 启用或有值以便运维识别;使用与监控清单一致、稳定且不含秘密的标签。
OLAP 保留 cluster_name,使长作业能从操作系统与 PostgreSQL 视图中归属;更细粒度作业身份应使用 application_name。
小规格 不要为容量而调节 cluster_name。其可观测性价值通常高于微小开销,但应避免高基数或敏感标签。

Pigsty 取值

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

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

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

常见坑

  • 期待重新加载或 SET 激活 cluster_name,而它实际需要受控重启服务器。
  • 把秘密或无界高基数数据放入运维可见的进程标签。
  • 集群、应用与进程标签不一致,无法在监控系统之间关联。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 cluster_name。

application_name · update_process_title · log_line_prefix · log_timezone · log_hostname

参考资料

3 - debug_pretty_print

debug_pretty_print 是 PostgreSQL 中用于对解析树和计划树的显示进行缩进美化的参数。
说明

Fact — 官方简述译文:对解析树和计划树的显示进行缩进美化。

身份

类型 , bool
上游 pg_settings 类型
Context , user
普通用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 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

机制详解

debug_pretty_print:对解析树和计划树的显示进行缩进美化。它只改变 debug_print_* 开关所输出内部解析树与计划树的缩进格式。

debug_pretty_print 属于 USER 上下文。获授权角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。

debug_print_* 开关沿普通服务器日志路径输出,因此 log_min_messages、log_destination 与收集器容量共同决定内容能否安全保留。

调优建议

提示

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

场景 建议
OLTP 不应在生产环境全局调优或启用 debug_pretty_print。若服务器开发级诊断确有需要,只在单一会话短时开启,并安全接收产生的日志。
OLAP 不要用 debug_pretty_print 替代分析 SQL 的 EXPLAIN;应定向抓取计划,而不是转储每一棵内部树。
小规格 保持 debug_pretty_print 的正常默认值。冗长内部树可能意外耗尽小节点的日志 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 专属理由。

常见坑

  • 只在一个会话中修改 debug_pretty_print,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
  • 全局长期打开内部树转储,压垮日志 I/O、存储或摄取。
  • 把调试输出当作稳定公共格式,或用它替代定向 EXPLAIN 诊断。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 debug_pretty_print。

debug_print_parse · debug_print_plan · debug_print_rewritten · log_min_messages · client_min_messages

参考资料

4 - debug_print_parse

debug_print_parse 决定 PostgreSQL 是否记录每个查询的解析树。
说明

Fact — 官方简述译文:记录每个查询的解析树。

身份

类型 , bool
上游 pg_settings 类型
Context , user
普通用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 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

机制详解

debug_print_parse:记录每个查询的解析树。输出是每条查询的 PostgreSQL 内部解析树表示,而不是规范化后的 SQL 文本。

debug_print_parse 属于 USER 上下文。获授权角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。

debug_print_* 开关沿普通服务器日志路径输出,因此 log_min_messages、log_destination 与收集器容量共同决定内容能否安全保留。

调优建议

提示

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

场景 建议
OLTP 不应在生产环境全局调优或启用 debug_print_parse。若服务器开发级诊断确有需要,只在单一会话短时开启,并安全接收产生的日志。
OLAP 不要用 debug_print_parse 替代分析 SQL 的 EXPLAIN;应定向抓取计划,而不是转储每一棵内部树。
小规格 保持 debug_print_parse 的正常默认值。冗长内部树可能意外耗尽小节点的日志 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 专属理由。

常见坑

  • 只在一个会话中修改 debug_print_parse,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
  • 全局长期打开内部树转储,压垮日志 I/O、存储或摄取。
  • 把调试输出当作稳定公共格式,或用它替代定向 EXPLAIN 诊断。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 debug_print_parse。

debug_pretty_print · debug_print_plan · debug_print_rewritten · log_min_messages · client_min_messages

参考资料

5 - debug_print_plan

debug_print_plan 决定 PostgreSQL 是否记录每个查询的执行计划树。
说明

Fact — 官方简述译文:记录每个查询的执行计划树。

身份

类型 , bool
上游 pg_settings 类型
Context , user
普通用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 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

机制详解

debug_print_plan:记录每个查询的执行计划树。输出是每条查询的内部计划树,比定向执行 EXPLAIN 冗长得多,主要用于服务器调试。

debug_print_plan 属于 USER 上下文。获授权角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。

debug_print_* 开关沿普通服务器日志路径输出,因此 log_min_messages、log_destination 与收集器容量共同决定内容能否安全保留。

调优建议

提示

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

场景 建议
OLTP 不应在生产环境全局调优或启用 debug_print_plan。若服务器开发级诊断确有需要,只在单一会话短时开启,并安全接收产生的日志。
OLAP 不要用 debug_print_plan 替代分析 SQL 的 EXPLAIN;应定向抓取计划,而不是转储每一棵内部树。
小规格 保持 debug_print_plan 的正常默认值。冗长内部树可能意外耗尽小节点的日志 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 专属理由。

常见坑

  • 只在一个会话中修改 debug_print_plan,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
  • 全局长期打开内部树转储,压垮日志 I/O、存储或摄取。
  • 把调试输出当作稳定公共格式,或用它替代定向 EXPLAIN 诊断。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 debug_print_plan。

debug_pretty_print · debug_print_parse · debug_print_rewritten · log_min_messages · client_min_messages

参考资料

6 - debug_print_raw_parse

debug_print_raw_parse:把每条查询的原始解析树写入日志。实测在档范围为 PG19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 off,context 为 user。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明

Fact — 官方简述译文:把每条查询的原始解析树写入日志。

身份

类型 , bool
上游 pg_settings 类型
Context , user
普通用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 boot 值 , off
off

生命周期

Fact
首次观测 PG19 Beta 3
在档版本 PG19 Beta 3
移除版本
引入提交 06473f5a344d — Allow to log raw parse tree.
提交日期 2025-09-06
Discussion 讨论 1

默认值变迁

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

机制详解

debug_print_raw_parse:把每条查询的原始解析树写入日志。它可以按会话修改,便于在不影响全部负载的前提下比较计划或行为。 本站在 PG19 Beta 3 实测到它;boot_val 是编译或初始化基线,并不能证明某个运行集群的当前有效值。

原始解析树在语义分析、重写、规划与执行之前输出。消息级别为 LOG;debug_pretty_print 控制格式,而 client_min_messages 与 log_min_messages 决定输出位置。内容可能非常庞大,也可能暴露查询结构。

应与 debug_print_parse、debug_print_rewritten、debug_print_plan、debug_pretty_print 一起理解。请在目标服务器检查 SHOW 与 pg_settings,确认 source 和 pending_restart,并在修改前后对比真实负载、日志和资源指标。

调优建议

提示

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

场景 建议
OLTP 在出现可复现的运维需求前保持上游默认;应在代表性并发下测试,并在全局修改前检查日志、延迟与关联参数。
OLAP 结合有代表性的长查询和批处理评估,比较整个任务的总耗时、资源、日志量与失败行为,而不是孤立操作。
小规格 尽量减少覆盖并记录回滚。小系统容纳额外日志、worker、内存或保留 WAL 的余量更小,必须用明确资源上限验证。

Pigsty 取值

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

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

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

常见坑

  • 把 debug_print_raw_parse 的实测 boot_val 当成初始化后或托管集群当前有效值的证明。
  • 忽略 pg_settings 报告的 user context,误以为修改会立即生效。
  • 孤立修改该参数,没有检查关联上限、可观测性和回滚路径。
  • 在生产中依赖测试版行为,却没有在 PostgreSQL 19 正式版发布后重新验证。

debug_print_parse · debug_print_rewritten · debug_print_plan · debug_pretty_print · log_min_messages

参考资料

7 - debug_print_rewritten

debug_print_rewritten 决定 PostgreSQL 是否记录每个查询重写后的解析树。
说明

Fact — 官方简述译文:记录每个查询重写后的解析树。

身份

类型 , bool
上游 pg_settings 类型
Context , user
普通用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 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

机制详解

debug_print_rewritten:记录每个查询重写后的解析树。它显示规则重写后的查询树,可诊断视图与规则问题,但可能产生非常庞大的日志。

debug_print_rewritten 属于 USER 上下文。获授权角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。

debug_print_* 开关沿普通服务器日志路径输出,因此 log_min_messages、log_destination 与收集器容量共同决定内容能否安全保留。

调优建议

提示

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

场景 建议
OLTP 不应在生产环境全局调优或启用 debug_print_rewritten。若服务器开发级诊断确有需要,只在单一会话短时开启,并安全接收产生的日志。
OLAP 不要用 debug_print_rewritten 替代分析 SQL 的 EXPLAIN;应定向抓取计划,而不是转储每一棵内部树。
小规格 保持 debug_print_rewritten 的正常默认值。冗长内部树可能意外耗尽小节点的日志 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 专属理由。

常见坑

  • 只在一个会话中修改 debug_print_rewritten,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
  • 全局长期打开内部树转储,压垮日志 I/O、存储或摄取。
  • 把调试输出当作稳定公共格式,或用它替代定向 EXPLAIN 诊断。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 debug_print_rewritten。

debug_pretty_print · debug_print_parse · debug_print_plan · log_min_messages · client_min_messages

参考资料

8 - event_source

event_source 定义在 Windows 事件日志中标识 PostgreSQL 消息的应用名称。
说明

Fact — 官方简述译文:设置在 Windows 事件日志中标识 PostgreSQL 消息的应用名称。

身份

类型 , string
上游 pg_settings 类型
Context , postmaster
修改后需要重启数据库
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / Where to Log
上游分类
最后 boot 值 , PostgreSQL
PostgreSQL

生命周期

Fact
首次观测 PG9.2
在档版本 PG9.2–19 Beta 3
移除版本
引入提交 d8ea33f2c027 — Support configurable eventlog application names on Windows
提交日期 2011-10-25
Discussion

默认值变迁

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

机制详解

event_source:设置在 Windows 事件日志中标识 PostgreSQL 消息的应用名称。这是 Windows 事件日志标识符,只有 eventlog 是活动日志目标时才会生效。

event_source 属于 POSTMASTER 上下文:PostgreSQL 在服务器启动时读取它,重新加载配置或会话 SET 都不能使新值生效。

只有 Windows 上的 log_destination 选择 eventlog 时才读取 event_source;其余管线由 Windows 事件日志注册、权限、路由与保留策略提供。

调优建议

提示

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

场景 建议
OLTP 只有 Windows eventlog 部署才设置 event_source,并使用由主机日志策略注册和路由的稳定、无秘密标识。
OLAP 各负载类型保持相同事件源,避免 Windows 收集规则与看板按模板碎片化。
小规格 除非选择 eventlog,否则保留 event_source 默认值;修改未启用路径上的标签没有容量或可观测性收益。

Pigsty 取值

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

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

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

常见坑

  • 期待重新加载或 SET 激活 event_source,而它实际需要受控重启服务器。
  • 更改来源名称,却未注册或更新 Windows 事件日志路由与访问策略。
  • 在 eventlog 未启用或平台不是 Windows 时期待 event_source 生效。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 event_source。

logging_collector · log_destination · log_directory · log_filename · log_rotation_age · log_rotation_size

参考资料

9 - log_autoanalyze_min_duration

log_autoanalyze_min_duration:设置记录 autovacuum ANALYZE 动作的最短执行时间。实测在档范围为 PG19 Beta 3;最后在档的 PG19 Beta 3 启动默认值为 10 min,context 为 sighup。这是测试版快照事实,PostgreSQL 19 正式发布前仍可能变化。
说明

Fact — 官方简述译文:设置记录 autovacuum ANALYZE 动作的最短执行时间。

身份

类型 , integer
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 , ms
原始单位
范围 , -12147483647
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 boot 值 , 600000
10 min

生命周期

Fact
首次观测 PG19 Beta 3
在档版本 PG19 Beta 3
移除版本
引入提交 dd3ae378301f — Add log_autoanalyze_min_duration
提交日期 2025-10-15
Discussion 讨论 1

默认值变迁

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

机制详解

log_autoanalyze_min_duration:设置记录 autovacuum ANALYZE 动作的最短执行时间。重新加载配置即可让服务器采用新值,无需完整重启。 本站在 PG19 Beta 3 实测到它;boot_val 是编译或初始化基线,并不能证明某个运行集群的当前有效值。

0 会记录每次自动 ANALYZE,-1 禁用这类耗时消息,正值则记录达到阈值的动作,以及因锁冲突或关系被删除而跳过的相关事件。表级存储参数可以覆盖它,并且它与记录 VACUUM 的 log_autovacuum_min_duration 相互独立。

应与 log_autovacuum_min_duration、autovacuum、autovacuum_analyze_threshold、autovacuum_analyze_scale_factor 一起理解。请在目标服务器检查 SHOW 与 pg_settings,确认 source 和 pending_restart,并在修改前后对比真实负载、日志和资源指标。

调优建议

提示

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

场景 建议
OLTP 在出现可复现的运维需求前保持上游默认;应在代表性并发下测试,并在全局修改前检查日志、延迟与关联参数。
OLAP 结合有代表性的长查询和批处理评估,比较整个任务的总耗时、资源、日志量与失败行为,而不是孤立操作。
小规格 尽量减少覆盖并记录回滚。小系统容纳额外日志、worker、内存或保留 WAL 的余量更小,必须用明确资源上限验证。

Pigsty 取值

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

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

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

常见坑

  • 把 log_autoanalyze_min_duration 的实测 boot_val 当成初始化后或托管集群当前有效值的证明。
  • 忽略 pg_settings 报告的 sighup context,误以为修改会立即生效。
  • 孤立修改该参数,没有检查关联上限、可观测性和回滚路径。
  • 在生产中依赖测试版行为,却没有在 PostgreSQL 19 正式版发布后重新验证。

log_autovacuum_min_duration · autovacuum · autovacuum_analyze_threshold · autovacuum_analyze_scale_factor · log_min_messages

参考资料

10 - log_autovacuum_min_duration

log_autovacuum_min_duration 定义记录 autovacuum 操作所需达到的最短执行时间。
说明

Fact — 官方简述译文:设置记录 autovacuum 操作所需达到的最短执行时间。

身份

类型 , integer
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 , ms
原始单位
范围 , -12147483647
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 boot 值 , 600000
10 min

生命周期

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

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG9.0–14 -1 ms -1 ms
PG15–19 Beta 3 600000 ms 10 min

机制详解

log_autovacuum_min_duration:设置记录 autovacuum 操作所需达到的最短执行时间。每个达到阈值的自动 VACUUM 或 ANALYZE 会输出时长与工作详情;-1 关闭完成记录,零记录所有动作。

log_autovacuum_min_duration 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_autovacuum_min_duration;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_autovacuum_min_duration 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_autovacuum_min_duration 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

Pigsty 取值

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

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

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 = 1s (dcs);OLAP: PG9.0–19 Beta 3 = 1s (dcs);CRIT: PG9.0–19 Beta 3 = 1s (dcs);TINY: PG9.0–19 Beta 3 = 1s (dcs)。 建议(待人工复核)——编辑推断:一秒阈值让各模板都能看到异常缓慢的 vacuum 维护,同时避免记录每个快速动作。

常见坑

  • 编辑 log_autovacuum_min_duration 后没有重新加载配置,也没有核对有效值与后续行为。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 log_autovacuum_min_duration。

log_checkpoints · log_lock_waits · log_lock_failures · log_temp_files · log_replication_commands

参考资料

11 - log_checkpoints

log_checkpoints 决定 PostgreSQL 是否记录每次检查点。
说明

Fact — 官方简述译文:记录每次检查点。

身份

类型 , bool
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 boot 值 , on
on

生命周期

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

默认值变迁

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

机制详解

log_checkpoints:记录每次检查点。检查点记录包含各阶段耗时及缓冲区或 WAL 工作量,暴露检查点节奏与写压力,而不只是一个标记。

log_checkpoints 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_checkpoints;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_checkpoints 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_checkpoints 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

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.0–19 Beta 3 = on (dcs);OLAP: PG9.0–19 Beta 3 = on (dcs);CRIT: PG9.0–19 Beta 3 = on (dcs);TINY: PG9.0–19 Beta 3 = on (dcs)。 建议(待人工复核)——编辑推断:显式记录检查点可在各版本一致保留写入量与时序证据,包括上游默认曾为 off 的版本。

常见坑

  • 编辑 log_checkpoints 后没有重新加载配置,也没有核对有效值与后续行为。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 log_checkpoints。

log_autovacuum_min_duration · log_lock_waits · log_lock_failures · log_temp_files · log_replication_commands

参考资料

12 - log_connections

log_connections 决定 PostgreSQL 是否记录连接建立与初始化过程中的指定阶段。
说明

Fact — 官方简述译文:记录连接建立与初始化过程中的指定阶段。

身份

类型 , string
上游 pg_settings 类型
Context , superuser-backend
超级用户后端启动时固定
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 boot 值 , ""
empty string

生命周期

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

默认值变迁

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

机制详解

PostgreSQL 10–17 中,log_connections 是布尔参数,启用后记录成功连接。PostgreSQL 18 将其改为字符串列表,精确选项为 receipt、authentication、authorization、setup_durations 与 all;空字符串关闭连接日志。为兼容旧配置,on、true、yes、1 等价于 receipt,authentication,authorization,off、false、no、0 等价于空列表。认证失败无论本参数为何值都会记录。

log_connections 属于 SUPERUSER_BACKEND 上下文:超级用户或获授相应 SET 权限的角色可在会话启动时选择它,但后端会话启动后不能再修改。因此配置变化只影响新会话。

receipt 记录连接到达,authentication 记录认证方法提交的原始身份,authorization 记录带用户、数据库和应用上下文的成功授权,setup_durations 记录总初始化、后端 fork 与认证耗时。会话结束由 log_disconnections 单独控制;连接身份与拓扑仍属于敏感日志数据。

调优建议

提示

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

场景 建议
OLTP 常规 OLTP 只记录审计或延迟问题真正需要的阶段;authorization 以较低日志量保留成功连接轨迹,receipt 与 authentication 增加授权前证据。只有排查连接启动延迟时才加入 setup_durations。
OLAP 分析会话更少但更长,authorization 加 setup_durations 可用于归因昂贵的连接初始化;不要仅因查询量较低就使用 all。
小规格 列表保持最小,并继续监控不受本参数影响的认证失败。确认日志存储与脱敏能够安全保留原始身份和应用名称。

Pigsty 取值

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

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

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–17 未修改, PG18–19 Beta 3 = authorization (dcs);OLAP: PG9.0–17 未修改, PG18–19 Beta 3 = authorization (dcs);CRIT: PG9.0–17 = on (dcs), PG18–19 Beta 3 = receipt,authentication,authorization (dcs);TINY: PG9.0–19 Beta 3 未修改。 建议(待人工复核)——编辑推断:CRIT 捕获更完整的认证审计轨迹,而 PostgreSQL 18 的 OLTP 与 OLAP 以较低日志量保留成功授权事件;迁移语义仍需复核。

常见坑

  • 使用不存在的 setup,而不是 PostgreSQL 18 的有效选项 setup_durations。
  • 误以为兼容值 on 等于 all;它不含 setup_durations,只映射到 receipt、authentication、authorization。
  • 期待既有会话继承新值,而该参数在后端启动时已经固定。
  • 未考虑 psql 等客户端可能探测两次就把重复 receipt 当作攻击,或在没有访问控制策略时长期保留原始身份。

log_statement · log_duration · log_disconnections · log_parameter_max_length · log_parameter_max_length_on_error

参考资料

13 - log_destination

log_destination 定义服务器日志输出的目标。
说明

Fact — 官方简述译文:设置服务器日志输出的目标。

身份

类型 , string
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / Where to Log
上游分类
最后 boot 值 , stderr
stderr

生命周期

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

默认值变迁

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

机制详解

log_destination:设置服务器日志输出的目标。可同时启用多个目标;csvlog 与 jsonlog 需要 logging_collector,而 stderr、syslog 和 Windows eventlog 采用不同传输路径。

log_destination 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

实际路径由 log_destination、logging_collector 或 syslog/eventlog、文件命名与权限、轮转触发条件,以及外部转运或保留共同构成。

调优建议

提示

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

场景 建议
OLTP 把 log_destination 纳入端到端日志设计,联合验证收集器、轮转、所有权、转运、保留策略以及目标写满后的恢复。
OLAP 按分析日志突发为 log_destination 路径定容,并验证轮转或下游摄取不会阻塞数据库进程。
小规格 为 log_destination 使用有界且易轮转的配置并监控剩余空间;小节点不应保留重复格式或无限文件。

Pigsty 取值

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

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

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 = csvlog (dcs);OLAP: PG9.0–19 Beta 3 = csvlog (dcs);CRIT: PG9.0–19 Beta 3 = csvlog (dcs);TINY: PG9.0–19 Beta 3 = csvlog (dcs)。 建议(待人工复核)——编辑推断:csvlog 为所有模板提供稳定的结构化记录,便于收集与面向 SQL 的分析。

常见坑

  • 编辑 log_destination 后没有重新加载配置,也没有核对有效值与后续行为。
  • 组合互不兼容的目标、收集器、文件名与轮转假设,最终丢失或覆盖日志。
  • 未监控写满或不可写的日志目标;不同路径下它可能阻塞日志甚至数据库活动。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 log_destination。

logging_collector · log_directory · log_filename · log_rotation_age · log_rotation_size

参考资料

14 - log_directory

log_directory 定义日志文件的目标目录。
说明

Fact — 官方简述译文:设置日志文件的目标目录。

身份

类型 , string
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / Where to Log
上游分类
最后 boot 值 , log
log

生命周期

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

默认值变迁

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

机制详解

log_directory:设置日志文件的目标目录。相对路径在数据目录下解析,绝对路径则可把收集器管理的文件放到独立文件系统。

log_directory 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

实际路径由 log_destination、logging_collector 或 syslog/eventlog、文件命名与权限、轮转触发条件,以及外部转运或保留共同构成。

调优建议

提示

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

场景 建议
OLTP 把 log_directory 纳入端到端日志设计,联合验证收集器、轮转、所有权、转运、保留策略以及目标写满后的恢复。
OLAP 按分析日志突发为 log_directory 路径定容,并验证轮转或下游摄取不会阻塞数据库进程。
小规格 为 log_directory 使用有界且易轮转的配置并监控剩余空间;小节点不应保留重复格式或无限文件。

Pigsty 取值

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

模板 有效值 与上游 boot 比较 源表达式
OLTP /pg/log/postgres 不同于 boot 值 {{ pg_log_dir }}
OLAP /pg/log/postgres 不同于 boot 值 {{ pg_log_dir }}
CRIT /pg/log/postgres 不同于 boot 值 {{ pg_log_dir }}
TINY /pg/log/postgres 不同于 boot 值 {{ pg_log_dir }}
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 = /pg/log/postgres (dcs);OLAP: PG9.0–19 Beta 3 = /pg/log/postgres (dcs);CRIT: PG9.0–19 Beta 3 = /pg/log/postgres (dcs);TINY: PG9.0–19 Beta 3 = /pg/log/postgres (dcs)。 建议(待人工复核)——编辑推断:专用 /pg/log/postgres 路径把 PostgreSQL 日志与数据目录分离,并与托管文件系统布局一致。

常见坑

  • 编辑 log_directory 后没有重新加载配置,也没有核对有效值与后续行为。
  • 组合互不兼容的目标、收集器、文件名与轮转假设,最终丢失或覆盖日志。
  • 未监控写满或不可写的日志目标;不同路径下它可能阻塞日志甚至数据库活动。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 log_directory。

logging_collector · log_destination · log_filename · log_rotation_age · log_rotation_size

参考资料

15 - log_disconnections

log_disconnections 决定 PostgreSQL 是否记录会话结束及其持续时间。
说明

Fact — 官方简述译文:记录会话结束及其持续时间。

身份

类型 , bool
上游 pg_settings 类型
Context , superuser-backend
超级用户后端启动时固定
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 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_disconnections:记录会话结束及其持续时间。记录在会话结束时输出并包含会话时长,可与连接开始身份配对,但不能证明每次突发故障都到达日志器。

log_disconnections 属于 SUPERUSER_BACKEND 上下文:配置变化在新后端会话启动时生效,并需要超级用户级权限;既有会话保留启动值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_disconnections;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_disconnections 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_disconnections 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

Pigsty 取值

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

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

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 未修改;OLAP: PG9.0–19 Beta 3 未修改;CRIT: PG9.0–19 Beta 3 = on (dcs);TINY: PG9.0–19 Beta 3 未修改。 建议(待人工复核)——编辑推断:CRIT 记录会话结束与持续时间以补全连接审计轨迹,并只在该模板承担额外日志量。

常见坑

  • 期待既有会话继承新的 log_disconnections 值,而它在每个后端启动时已经固定。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 log_disconnections。

log_statement · log_duration · log_connections · log_parameter_max_length · log_parameter_max_length_on_error

参考资料

16 - log_duration

log_duration 决定 PostgreSQL 是否记录每条已完成 SQL 语句的执行时长。
说明

Fact — 官方简述译文:记录每条已完成 SQL 语句的执行时长。

身份

类型 , bool
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 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_duration:记录每条已完成 SQL 语句的执行时长。它为每条完成语句输出时长,但自身不输出语句文本;需要文本时由 log_statement 或时长阈值提供。

log_duration 属于 SUPERUSER 上下文。超级用户或获授相应 SET 权限的角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_duration;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_duration 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_duration 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

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_duration,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 期待时长日志包含 SQL 文本,而实际上没有任何语句日志参数输出文本。

log_statement · log_connections · log_disconnections · log_parameter_max_length · log_parameter_max_length_on_error

参考资料

17 - log_error_verbosity

log_error_verbosity 定义日志消息的详细程度。
说明

Fact — 官方简述译文:设置日志消息的详细程度。

身份

类型 , enum
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 , terse, default, verbose
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 boot 值 , default
default

生命周期

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

默认值变迁

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

机制详解

log_error_verbosity:设置日志消息的详细程度。TERSE 抑制详情与提示,DEFAULT 保留常规诊断,VERBOSE 追加 SQLSTATE 以及源文件、函数与行号。

log_error_verbosity 属于 SUPERUSER 上下文。超级用户或获授相应 SET 权限的角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_error_verbosity;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_error_verbosity 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_error_verbosity 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

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_error_verbosity,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 log_error_verbosity。

log_statement · log_duration · log_connections · log_disconnections · log_parameter_max_length · log_parameter_max_length_on_error

参考资料

18 - log_file_mode

log_file_mode 定义日志文件的权限模式。
说明

Fact — 官方简述译文:设置日志文件的权限模式。

身份

类型 , integer
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 ,
原始单位
范围 , 0511
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / Where to Log
上游分类
最后 boot 值 , 384
384

生命周期

Fact
首次观测 PG9.1
在档版本 PG9.1–19 Beta 3
移除版本
引入提交 3ec694e17bc0 — Add a log_file_mode GUC that allows control of the file permissions set on log files created by the syslogger process.
提交日期 2010-07-16
Discussion

默认值变迁

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

机制详解

log_file_mode 是 logging_collector 新建文件所用的 chmod 风格数字模式。常规八进制写法必须带前导零:0640 与十进制 640 不是同一个数值。它不作用于 syslog/eventlog 输出,也不会修改既有文件。

它属于 SIGHUP 上下文。重载后,logging_collector 下次创建文件时使用新模式;重载不会对当前打开文件或历史文件执行 chmod。

有效访问边界还包括 PostgreSQL 服务账号、文件组、log_directory 的所有权与遍历权限、转运代理组成员,以及外部保留副本。只有该组受到严格控制时,组可读模式才安全。

调优建议

提示

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

场景 建议
OLTP 选择既能让获准收集器或转运组读取新文件、又尽量小权限的模式。在真实轮转后核对所有权;策略变化时应显式修复既有文件。
OLAP 分析日志往往包含查询文本与身份信息,应采用相同或更严格模式;日志量更大不是扩大文件访问范围的理由。
小规格 除非受控本地组必须转运日志,否则保持 0600;使用 0640 时应审计组成员与目录权限,而不是向所有用户开放读取。

Pigsty 取值

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

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

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.1–19 Beta 3 = 0640 (dcs);OLAP: PG9.1–19 Beta 3 = 0640 (dcs);CRIT: PG9.1–19 Beta 3 = 0640 (dcs);TINY: PG9.1–19 Beta 3 = 0640 (dcs)。 建议(待人工复核)——编辑推断:0640 阻止其他用户读取日志,同时允许运维组读取并转运。

常见坑

  • 编辑 log_file_mode 后没有重新加载配置,也没有核对有效值与后续行为。
  • 组合互不兼容的目标、收集器、文件名与轮转假设,最终丢失或覆盖日志。
  • 未监控写满或不可写的日志目标;不同路径下它可能阻塞日志甚至数据库活动。
  • 写成 640 而非八进制 0640,得到不同的数字权限模式。

logging_collector · log_destination · log_directory · log_filename · log_rotation_age · log_rotation_size

参考资料

19 - log_filename

log_filename 定义日志文件名模式。
说明

Fact — 官方简述译文:设置日志文件名模式。

身份

类型 , string
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / Where to Log
上游分类
最后 boot 值 , postgresql-%Y-%m-%d_%H%M%S.log
postgresql-%Y-%m-%d_%H%M%S.log

生命周期

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

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG9.0–19 Beta 3 postgresql-%Y-%m-%d_%H%M%S.log postgresql-%Y-%m-%d_%H%M%S.log

机制详解

log_filename:设置日志文件名模式。logging_collector 每次打开新文件时按 log_timezone 展开 strftime 转义,因此重复名称必须与轮转和截断协调。

log_filename 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

实际路径由 log_destination、logging_collector 或 syslog/eventlog、文件命名与权限、轮转触发条件,以及外部转运或保留共同构成。

调优建议

提示

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

场景 建议
OLTP 使用与轮转策略唯一性相匹配的文件名模式。若名称会重复,应结合按时间轮转、log_truncate_on_rotation 与已确认的转运,避免复用名称混合周期或覆盖尚未收集的数据。
OLAP 为大型分析日志选择可预测的周期边界,并保证下游摄取在模式重复前关闭上一文件;不要把按大小轮转与非唯一名称组合。
小规格 星期或日期循环只有在保留策略与空间监控匹配时才有界。保留足够时间组成,避免重启或手工轮转后的意外冲突。

Pigsty 取值

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

模板 有效值 与上游 boot 比较 源表达式
OLTP postgresql-%a.log 不同于 boot 值 'postgresql-%a.log'
OLAP postgresql-%a.log 不同于 boot 值 'postgresql-%a.log'
CRIT postgresql-%a.log 不同于 boot 值 'postgresql-%a.log'
TINY postgresql-%a.log 不同于 boot 值 'postgresql-%a.log'
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 = postgresql-%a.log (dcs);OLAP: PG9.0–19 Beta 3 = postgresql-%a.log (dcs);CRIT: PG9.0–19 Beta 3 = postgresql-%a.log (dcs);TINY: PG9.0–19 Beta 3 = postgresql-%a.log (dcs)。 建议(待人工复核)——编辑推断:按星期命名形成可预测的七文件循环,意在配合每日轮转与截断。

常见坑

  • 编辑 log_filename 后没有重新加载配置,也没有核对有效值与后续行为。
  • 组合互不兼容的目标、收集器、文件名与轮转假设,最终丢失或覆盖日志。
  • 未监控写满或不可写的日志目标;不同路径下它可能阻塞日志甚至数据库活动。
  • 使用重复的 strftime 文件名,却未匹配轮转与截断策略,造成持续追加或意外覆盖。

logging_collector · log_destination · log_directory · log_rotation_age · log_rotation_size

参考资料

20 - log_hostname

log_hostname 是 PostgreSQL 中用于在连接日志中记录主机名的参数。
说明

Fact — 官方简述译文:在连接日志中记录主机名。

身份

类型 , bool
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 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_hostname:在连接日志中记录主机名。为把客户端地址转换为名称会执行反向 DNS;名称服务缓慢时可能增加连接延迟甚至造成停顿。

log_hostname 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_hostname;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_hostname 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_hostname 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

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_hostname 后没有重新加载配置,也没有核对有效值与后续行为。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 在解析器延迟位于连接路径时启用反向 DNS。

application_name · cluster_name · update_process_title · log_line_prefix · log_timezone

参考资料

21 - log_line_prefix

log_line_prefix 是 PostgreSQL 中用于控制每行日志前添加的信息的参数。
说明

Fact — 官方简述译文:控制每行日志前添加的信息。

身份

类型 , string
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 boot 值 , %m [%p]
%m [%p]

生命周期

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

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG9.0–9.6 "" empty string
PG10–19 Beta 3 %m [%p] %m [%p]

机制详解

log_line_prefix:控制每行日志前添加的信息。百分号转义可加入会话、用户、数据库、进程、应用与时间上下文;csvlog 和 jsonlog 已单独携带结构化字段。

log_line_prefix 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_line_prefix;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_line_prefix 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_line_prefix 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

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_line_prefix 后没有重新加载配置,也没有核对有效值与后续行为。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 遗漏关联多行文本日志所需的进程、会话、数据库、用户或应用身份。

application_name · cluster_name · update_process_title · log_timezone · log_hostname

参考资料

22 - log_lock_failures

log_lock_failures 决定 PostgreSQL 是否记录锁获取失败。
说明

Fact — 官方简述译文:记录锁获取失败。

身份

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

生命周期

Fact
首次观测 PG18
在档版本 PG18–19 Beta 3
移除版本
引入提交 73bdcfab35ec — Rename log_lock_failure GUC to log_lock_failures for consistency.
提交日期 2025-06-03
Discussion 讨论 1

默认值变迁

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

机制详解

log_lock_failures 引入于 PostgreSQL 18,在受支持的锁获取失败时输出详细消息。PostgreSQL 18 当前支持范围明确只有 SELECT … NOWAIT 导致的锁失败;它不是所有 NOWAIT 类命令或所有锁错误的通用日志器。

它属于 SUPERUSER 上下文。超级用户或获授相应 SET 权限的角色可按会话修改,因此角色/数据库默认值与连接池重置行为决定哪些会话产生记录。

它补充 log_lock_waits:后者记录超过 deadlock_timeout 的等待,而 SELECT … NOWAIT 会立即失败并可由本参数记录。详细消息可能暴露关系、锁与语句上下文,必须遵循常规日志访问策略。

调优建议

提示

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

场景 建议
OLTP 在 SELECT … NOWAIT 失败能解释延迟或重试行为的会话中启用,并把记录与应用重试及锁持有者关联;不要期待它覆盖无关锁错误。
OLAP 使用 SELECT … NOWAIT 的分析读取可在争用调查期间启用;若没有这类命令则保持 off,因为它不提供更广泛等待遥测。
小规格 正常日志量较低,但启用前仍应验证日志访问与保留。与 log_lock_waits 和死锁诊断配合,而不是把它当作替代品。

Pigsty 取值

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

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

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG18–19 Beta 3 = on (dcs);OLAP: PG18–19 Beta 3 未修改;CRIT: PG18–19 Beta 3 = on (dcs);TINY: PG18–19 Beta 3 未修改。 建议(待人工复核)——编辑推断:该覆盖似乎旨在为最需要立即锁失败重试或审计诊断的模板保留 SELECT … NOWAIT 失败详情;PostgreSQL 18 的该 GUC 不提供更广泛的锁失败覆盖。

常见坑

  • 误以为 PostgreSQL 18 会记录所有锁获取失败;当前只支持 SELECT … NOWAIT。
  • 用它替代 log_lock_waits,而立即失败与等待超过 deadlock_timeout 是不同事件。
  • 只在一个池化会话中启用,却认为其他会话继承了该值。
  • 在没有适当日志访问、脱敏与保留控制时保存详细锁和语句上下文。

log_checkpoints · log_autovacuum_min_duration · log_lock_waits · log_temp_files · log_replication_commands

参考资料

23 - log_lock_waits

log_lock_waits 决定 PostgreSQL 是否记录持续时间较长的锁等待。
说明

Fact — 官方简述译文:记录持续时间较长的锁等待。

身份

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

生命周期

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

默认值变迁

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

机制详解

log_lock_waits:记录持续时间较长的锁等待。锁等待超过 deadlock_timeout 后才记录,因此诊断阈值与死锁检测节奏相互耦合。

log_lock_waits 属于 SUPERUSER 上下文。超级用户或获授相应 SET 权限的角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_lock_waits;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_lock_waits 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_lock_waits 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

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.0–19 Beta 3 = on (dcs);OLAP: PG9.0–19 Beta 3 = on (dcs);CRIT: PG9.0–19 Beta 3 = on (dcs);TINY: PG9.0–19 Beta 3 = on (dcs)。 建议(待人工复核)——编辑推断:所有模板都保留长锁等待证据,因为它对诊断延迟与阻塞者价值高,而正常日志量较低。

常见坑

  • 只在一个会话中修改 log_lock_waits,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 修改 deadlock_timeout,却未意识到锁等待诊断出现时间也随之改变。

log_checkpoints · log_autovacuum_min_duration · log_lock_failures · log_temp_files · log_replication_commands

参考资料

24 - log_min_duration_sample

log_min_duration_sample 定义进入语句抽样记录所需达到的最短执行时间,抽样由 log_statement_sample_rate 决定。
说明

Fact — 官方简述译文:设置进入语句抽样记录所需达到的最短执行时间,抽样由 log_statement_sample_rate 决定。

身份

类型 , integer
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 , ms
原始单位
范围 , -12147483647
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / When to Log
上游分类
最后 boot 值 , -1
-1 ms

生命周期

Fact
首次观测 PG13
在档版本 PG13–19 Beta 3
移除版本
引入提交 6e3e6cc0e884 — Allow sampling of statements depending on duration
提交日期 2019-11-04
Discussion 讨论 1

默认值变迁

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

机制详解

log_min_duration_sample 让执行时长达到阈值的已完成语句进入由 log_statement_sample_rate 控制的随机日志路径。-1 关闭该路径,零让所有已完成语句进入,再由抽样率决定实际输出。

log_min_duration_statement 优先级更高。达到其阈值的语句始终记录且不参与抽样,即使同时超过 log_min_duration_sample。扩展查询协议下,Parse、Bind 与 Execute 的时长分别记录。

它属于 SUPERUSER 上下文的会话参数。抽样条目与 log_min_duration_statement 具有相同的语句文本、Bind 值、关联、开销和安全问题,因此 log_line_prefix 与 log_parameter_max_length 仍决定可用性与暴露范围。

调优建议

提示

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

场景 建议
OLTP 先用 log_min_duration_statement 设置始终记录阈值,再用更低抽样阈值与实测概率覆盖高流量中间区间。在 OLTP 峰值下验证实际样本数与敏感数据处理。
OLAP 长分析查询往往超过始终记录阈值,因此抽样可能无法减少这些日志。应依据时长分布选择阈值,而不是照搬 OLTP 值。
小规格 使用保守抽样率与有界语句文本。除非明确需要每条语句时长记录,小节点不要组合零阈值与抽样率 1。

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 专属理由。

常见坑

  • 期待抽样影响已被更高优先级 log_min_duration_statement 阈值捕获的语句。
  • 忘记扩展查询协议会分别计时并记录 Parse、Bind 与 Execute。
  • 把阈值设为零且 log_statement_sample_rate 为 1,意外记录每条已完成语句的时长。
  • 在没有关联标识、脱敏、访问控制与实测容量预算时抽样 SQL 和 Bind 值。

log_min_messages · log_min_error_statement · log_min_duration_statement · log_statement_sample_rate · log_transaction_sample_rate

参考资料

25 - log_min_duration_statement

记录执行时间达到阈值的每条已完成语句。它是确定性的慢查询采集开关,与抽样日志和取消语句是不同机制。
说明

Fact — 官方简述译文:记录运行时间达到配置阈值的已完成语句。

身份

类型 , integer
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 , ms
原始单位
范围 , -12147483647
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / When to Log
上游分类
最后 boot 值 , -1
-1 ms

生命周期

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

默认值变迁

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

机制详解

未写单位时按毫秒解释。-1 关闭按时长记录,0 记录所有已完成语句,正数则记录达到或超过阈值的语句。

由本参数选中的语句会始终记录而不参与抽样,因此优先于 log_min_duration_sample。使用扩展查询协议时,Parse、Bind、Execute 阶段的时长可能分别出现。

该参数只观察并记录已经完成的工作,不会终止慢语句;取消执行应使用独立的 statement_timeout。

调优建议

提示

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

场景 建议
OLTP 根据应用延迟目标和可接受日志量选择阈值。高 QPS 场景可用有意义的硬阈值捕获真正慢查询,并对更快的语句采用抽样。
OLAP 采用更高阈值,避免正常的长分析查询淹没日志;结合 query identifier 和工作负载标签,让重复记录仍然可行动。
小规格 调优期可使用较低阈值,但要观察磁盘与轮转;一旦日志本身成为可测负载,应提高阈值或改用抽样。

Pigsty 取值

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

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

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 = 100 (dcs);OLAP: PG9.0–19 Beta 3 = 1000 (dcs);CRIT: PG9.0–19 Beta 3 = 100 (dcs);TINY: PG9.0–19 Beta 3 = 100 (dcs)。 建议(待人工复核)——编辑推断(待维护者复核):Pigsty 主动保留确定性的慢查询证据,而 OLAP 用更宽松阈值适应天然更长的分析语句。

常见坑

  • 高吞吐系统上的低阈值可能制造巨量日志与 I/O。
  • SQL 文本可能含敏感字面量,日志应按应用数据同等级保护。
  • 它只记录慢语句而不取消;取消应使用 statement_timeout。
  • 扩展协议阶段可能分开记录,需要会话或 PID 关联。
  • 与 log_statement、抽样和 log_line_prefix 的组合可能造成重复或碎片化理解。

log_min_duration_sample · log_statement_sample_rate · log_statement · log_duration · log_line_prefix · statement_timeout

参考资料

26 - log_min_error_statement

log_min_error_statement 决定 PostgreSQL 是否记录所有产生不低于指定级别错误的语句。
说明

Fact — 官方简述译文:记录所有产生不低于指定级别错误的语句。

身份

类型 , enum
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 , debug5, debug4, debug3, debug2, debug1, info, notice, warning, error, log, fatal, panic
非枚举类型记为 —
分类 , Reporting and Logging / When to Log
上游分类
最后 boot 值 , error
error

生命周期

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

默认值变迁

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

机制详解

log_min_error_statement:记录所有产生不低于指定级别错误的语句。它控制是否附带产生错误级消息的 SQL 语句;消息本身是否输出则由 log_min_messages 分别决定。

log_min_error_statement 属于 SUPERUSER 上下文。超级用户或获授相应 SET 权限的角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_min_error_statement;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_min_error_statement 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_min_error_statement 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

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_min_error_statement,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 log_min_error_statement。

log_min_messages · log_min_duration_statement · log_min_duration_sample · log_statement_sample_rate · log_transaction_sample_rate

参考资料

27 - log_min_messages

log_min_messages 定义写入服务器日志的消息级别。
说明

Fact — 官方简述译文:设置写入服务器日志的消息级别。

身份

类型 , string
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / When to Log
上游分类
最后 boot 值 , warning
warning

生命周期

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

默认值变迁

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

机制详解

log_min_messages:设置写入服务器日志的消息级别。服务器日志严重级别中 LOG 的位置特殊,且顺序不同于 client_min_messages,因此不能在二者之间盲目照搬阈值名。

log_min_messages 属于 SUPERUSER 上下文。超级用户或获授相应 SET 权限的角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_min_messages;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_min_messages 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_min_messages 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

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_min_messages,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 log_min_messages。

log_min_error_statement · log_min_duration_statement · log_min_duration_sample · log_statement_sample_rate · log_transaction_sample_rate

参考资料

28 - log_parameter_max_length

log_parameter_max_length 定义记录语句时绑定参数值可写入日志的最大字节数。
说明

Fact — 官方简述译文:设置记录语句时绑定参数值可写入日志的最大字节数。

身份

类型 , integer
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 , B
原始单位
范围 , -11073741823
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 boot 值 , -1
-1 B

生命周期

Fact
首次观测 PG13
在档版本 PG13–19 Beta 3
移除版本
引入提交 0b34e7d307e6 — Improve user control over truncation of logged bind-parameter values.
提交日期 2020-04-02
Discussion 讨论 1

默认值变迁

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

机制详解

log_parameter_max_length 控制附加到非错误语句日志消息的 Bind 值。零不记录,-1 允许完整值,正字节数把每个文本值截断到该上限。

它作用于 log_statement、log_min_duration_statement 及相关语句日志产生的消息。任何非零值都会增加工作量;二进制参数必须先转换为文本才能记录。

它属于 SUPERUSER 上下文的会话参数,并与 log_parameter_max_length_on_error 相互独立。因此普通路径与错误路径需要分别决定保密性与开销。

调优建议

提示

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

场景 建议
OLTP Bind 值可能包含凭据或受监管数据时保持零。诊断确需值时,选择最小有用正上限,并在 OLTP 峰值流量下测量二进制 Bind 转换成本。
OLAP 分析参数可能是大数组或谓词;短期诊断使用有界正上限,不要使用 -1,并验证截断后日志仍有用。
小规格 默认使用零。完整值会消耗小节点难以安全承受的磁盘与转换 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 专属理由。

常见坑

  • 使用 -1,在普通语句日志中暴露完整凭据、令牌或大载荷。
  • 把截断当作脱敏;敏感前缀仍可能完整可见。
  • 值非零时忽略二进制 Bind 参数的文本转换开销。
  • 误以为它也限制由 log_parameter_max_length_on_error 控制的错误路径参数。

log_statement · log_duration · log_connections · log_disconnections · log_parameter_max_length_on_error

参考资料

29 - log_parameter_max_length_on_error

log_parameter_max_length_on_error 定义发生错误时绑定参数值可写入日志的最大字节数。
说明

Fact — 官方简述译文:设置发生错误时绑定参数值可写入日志的最大字节数。

身份

类型 , integer
上游 pg_settings 类型
Context , user
普通用户可在运行时修改
单位 , B
原始单位
范围 , -11073741823
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 boot 值 , 0
0 B

生命周期

Fact
首次观测 PG13
在档版本 PG13–19 Beta 3
移除版本
引入提交 0b34e7d307e6 — Improve user control over truncation of logged bind-parameter values.
提交日期 2020-04-02
Discussion 讨论 1

默认值变迁

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

机制详解

log_parameter_max_length_on_error 控制错误报告中包含的 Bind 值。默认零不记录,-1 允许完整值,正字节数把每个文本值截断到该上限。

只要值非零,PostgreSQL 就必须在每条语句开始时保留参数的文本表示,以备发生错误。即使语句成功也要支付该开销,二进制参数还需要转换而不只是复制文本。

它属于 USER 上下文的会话参数,并与 log_parameter_max_length 相互独立。因此即使普通语句日志不记录值,应用也可能在错误路径意外暴露。应联合评审错误详情、访问、脱敏与保留。

调优建议

提示

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

场景 建议
OLTP 除非错误诊断明确需要绑定值,否则保持 0。任何非零值都会让每条语句承担转换与保留内存开销,因此优先使用有界正值,并按角色、数据库或会话缩小范围。
OLAP 只在受控诊断参数化分析作业时使用有界正值;成功语句同样会保留参数文本,应同时预算转换成本与内存。
小规格 优先保持 0。若错误路径必须记录绑定值,应选短上限、缩小作用域,并在启用前验证内存开销与秘密脱敏策略。

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 专属理由。

常见坑

  • 误以为只有语句失败时才支付转换与内存成本;值非零时每条语句都会支付。
  • 使用 -1,把完整秘密或大载荷暴露在错误报告中。
  • 忽略二进制 Bind 值的文本转换成本,以及成功语句也会保留参数表示。
  • 误以为 log_parameter_max_length 会保护错误路径;两个上限彼此独立。

log_statement · log_duration · log_connections · log_disconnections · log_parameter_max_length

参考资料

30 - log_recovery_conflict_waits

log_recovery_conflict_waits 决定 PostgreSQL 是否记录备用库恢复冲突等待。
说明

Fact — 官方简述译文:记录备用库恢复冲突等待。

身份

类型 , bool
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 boot 值 , off
off

生命周期

Fact
首次观测 PG14
在档版本 PG14–19 Beta 3
移除版本
引入提交 0650ff23038b — Add GUC to log long wait times on recovery conflicts.
提交日期 2021-01-08
Discussion 讨论 1

默认值变迁

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

机制详解

log_recovery_conflict_waits:记录备用库恢复冲突等待。在备用库上,恢复冲突等待超过 deadlock_timeout 后会被记录,可在尚未必须取消查询前暴露回放延迟。

log_recovery_conflict_waits 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_recovery_conflict_waits;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_recovery_conflict_waits 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_recovery_conflict_waits 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

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 专属理由。

常见坑

  • 编辑 log_recovery_conflict_waits 后没有重新加载配置,也没有核对有效值与后续行为。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 log_recovery_conflict_waits。

log_checkpoints · log_autovacuum_min_duration · log_lock_waits · log_lock_failures · log_temp_files · log_replication_commands

参考资料

31 - log_replication_commands

log_replication_commands 决定 PostgreSQL 是否记录每条复制命令。
说明

Fact — 官方简述译文:记录每条复制命令。

身份

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

生命周期

Fact
首次观测 PG9.5
在档版本 PG9.5–19 Beta 3
移除版本
引入提交 4ad2a548050f — Add GUC to enable logging of replication commands.
提交日期 2014-09-13
Discussion

默认值变迁

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

机制详解

log_replication_commands:记录每条复制命令。它既覆盖复制协议命令,也覆盖 SQL 复制命令,因此能够暴露复制拓扑与复制槽活动。

log_replication_commands 属于 SUPERUSER 上下文。超级用户或获授相应 SET 权限的角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_replication_commands;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_replication_commands 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_replication_commands 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

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.5–19 Beta 3 = on (dcs);OLAP: PG9.5–19 Beta 3 = on (dcs);CRIT: PG9.5–19 Beta 3 = on (dcs);TINY: PG9.5–19 Beta 3 = on (dcs)。 建议(待人工复核)——编辑推断:复制命令历史有助于在托管集群中诊断复制槽、发送端、故障转移与拓扑变化。

常见坑

  • 只在一个会话中修改 log_replication_commands,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 log_replication_commands。

log_checkpoints · log_autovacuum_min_duration · log_lock_waits · log_lock_failures · log_temp_files

参考资料

32 - log_rotation_age

log_rotation_age 定义强制轮转日志文件前等待的时间。
说明

Fact — 官方简述译文:设置强制轮转日志文件前等待的时间。

身份

类型 , integer
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 , min
原始单位
范围 , 035791394
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / Where to Log
上游分类
最后 boot 值 , 1440
1 d

生命周期

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

默认值变迁

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

机制详解

log_rotation_age:设置强制轮转日志文件前等待的时间。收集器在达到间隔后打开新文件;零关闭这一触发器,但仍可使用按大小或外部轮转。

log_rotation_age 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

实际路径由 log_destination、logging_collector 或 syslog/eventlog、文件命名与权限、轮转触发条件,以及外部转运或保留共同构成。

调优建议

提示

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

场景 建议
OLTP 按文件允许保持打开的最长时间以及转运/保留边界设置 log_rotation_age,并确认文件名模式在该间隔生成不同名称或按预期复用。
OLAP 长分析突发本身不要求不同的时钟;选择能让下游可预测关闭和摄取文件、又不会生成过大对象的间隔。
小规格 优先使用简单的每日或更短间隔以限制故障影响。零会关闭按时间轮转,只有按大小或外部轮转已成为权威且经过测试时才安全。

Pigsty 取值

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

模板 有效值 与上游 boot 比较 源表达式
OLTP 1d 等于 boot 值 '1d'
OLAP 1d 等于 boot 值 '1d'
CRIT 1d 等于 boot 值 '1d'
TINY 1d 等于 boot 值 '1d'
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 = 1d (dcs);OLAP: PG9.0–19 Beta 3 = 1d (dcs);CRIT: PG9.0–19 Beta 3 = 1d (dcs);TINY: PG9.0–19 Beta 3 = 1d (dcs)。 建议(待人工复核)——编辑推断:每日轮转与星期文件名循环匹配,形成可预测的运维边界。

常见坑

  • 编辑 log_rotation_age 后没有重新加载配置,也没有核对有效值与后续行为。
  • 组合互不兼容的目标、收集器、文件名与轮转假设,最终丢失或覆盖日志。
  • 未监控写满或不可写的日志目标;不同路径下它可能阻塞日志甚至数据库活动。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 log_rotation_age。

logging_collector · log_destination · log_directory · log_filename · log_rotation_size

参考资料

33 - log_rotation_size

log_rotation_size 定义触发轮转前单个日志文件可达到的最大大小。
说明

Fact — 官方简述译文:设置触发轮转前单个日志文件可达到的最大大小。

身份

类型 , integer
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 , kB
原始单位
范围 , 02147483647
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / Where to Log
上游分类
最后 boot 值 , 10240
10 MiB

生命周期

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

默认值变迁

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

机制详解

log_rotation_size:设置触发轮转前单个日志文件可达到的最大大小。当前文件约达到该大小时收集器轮转;零只关闭大小触发器,不关闭按时间轮转。

log_rotation_size 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

实际路径由 log_destination、logging_collector 或 syslog/eventlog、文件命名与权限、轮转触发条件,以及外部转运或保留共同构成。

调优建议

提示

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

场景 建议
OLTP 需要直接限制单文件大小时,为 log_rotation_size 使用非零值,并让文件名能够区分同一时间周期内的多次轮转。设为零时,应确认按时间轮转与磁盘告警提供替代边界。
OLAP 分析日志突发可能反复跨越大小阈值;应测试生成的文件名后缀、转运吞吐与最大单文件大小,而不是习惯性调大。
小规格 适度大小上限可限制日志突发损害,但文件过小会增加元数据与转运开销。只有按时间循环和剩余空间护栏已经验证时才使用零。

Pigsty 取值

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

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

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 = 0 (dcs);OLAP: PG9.0–19 Beta 3 = 0 (dcs);CRIT: PG9.0–19 Beta 3 = 0 (dcs);TINY: PG9.0–19 Beta 3 = 0 (dcs)。 建议(待人工复核)——编辑推断:关闭按大小轮转似乎旨在让每日时间轮转成为唯一文件循环机制;磁盘护栏仍需独立复核。

常见坑

  • 编辑 log_rotation_size 后没有重新加载配置,也没有核对有效值与后续行为。
  • 组合互不兼容的目标、收集器、文件名与轮转假设,最终丢失或覆盖日志。
  • 未监控写满或不可写的日志目标;不同路径下它可能阻塞日志甚至数据库活动。
  • 设为零却没有有效的按时间或外部轮转策略,导致文件无界增长。

logging_collector · log_destination · log_directory · log_filename · log_rotation_age

参考资料

34 - log_startup_progress_interval

log_startup_progress_interval 定义耗时启动操作的进度日志间隔。
说明

Fact — 官方简述译文:设置耗时启动操作的进度日志间隔。

身份

类型 , integer
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 , ms
原始单位
范围 , 02147483647
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / When to Log
上游分类
最后 boot 值 , 10000
10 s

生命周期

Fact
首次观测 PG15
在档版本 PG15–19 Beta 3
移除版本
引入提交 9ce346eabf35 — Report progress of startup operations that take a long time.
提交日期 2021-10-25
Discussion 讨论 1 · 讨论 2

默认值变迁

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

机制详解

log_startup_progress_interval:设置耗时启动操作的进度日志间隔。启动进程在 WAL 回放等操作持续超过该间隔时周期性输出进度;零关闭这些更新。

log_startup_progress_interval 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_startup_progress_interval;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_startup_progress_interval 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_startup_progress_interval 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

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 专属理由。

常见坑

  • 编辑 log_startup_progress_interval 后没有重新加载配置,也没有核对有效值与后续行为。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 log_startup_progress_interval。

log_checkpoints · log_autovacuum_min_duration · log_lock_waits · log_lock_failures · log_temp_files · log_replication_commands

参考资料

35 - log_statement

log_statement 定义要记录的 SQL 语句类型。
说明

Fact — 官方简述译文:设置要记录的 SQL 语句类型。

身份

类型 , enum
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 , none, ddl, mod, all
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 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

机制详解

log_statement 可选 none、ddl、mod、all。ddl 记录数据定义命令,mod 再加入数据变更命令,all 记录所有到达日志点的语句;PREPARE、EXECUTE 与 EXPLAIN ANALYZE 按其包含命令分类。

使用扩展查询协议时,收到 Execute 才记录,并包含 Bind 参数值。即使设为 all,基本解析失败的简单语句,以及在 Execute 前的解析分析或规划阶段失败的扩展协议语句也不会记录;这些错误路径需要 log_min_error_statement。

它属于 SUPERUSER 上下文的会话参数。语句文本与 Bind 值可能暴露个人数据、令牌,甚至明文密码,因此范围选择、访问、脱敏、传输与保留必须同时作为安全控制和可观测性选择。

调优建议

提示

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

场景 建议
OLTP 常规 OLTP 以 none 或 ddl 为基线,查询性能使用时长阈值或抽样。启用 mod/all 前,测试日志量,并为 SQL 文本与 Bind 值建立具体脱敏和访问策略。
OLAP 分析排障使用角色或会话限定窗口,不要集群级 all。长生成 SQL 与大 Bind 值可能主导日志并暴露源数据。
小规格 优先使用 ddl 或定向阈值;即使节点安静,all 也可能压垮磁盘并泄漏秘密。保留 log_min_error_statement 以覆盖 log_statement 漏掉的语法/解析失败。

Pigsty 取值

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

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

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 = ddl (dcs);OLAP: PG9.0–19 Beta 3 = ddl (dcs);CRIT: PG9.0–19 Beta 3 = ddl (dcs);TINY: PG9.0–19 Beta 3 = ddl (dcs)。 建议(待人工复核)——编辑推断:记录 DDL 让所有模板获得模式变更轨迹,同时避免记录全部语句带来的保密与容量成本。

常见坑

  • 误以为 all 会捕获语法错误或 Execute 前的扩展协议失败;这些路径应使用 log_min_error_statement。
  • 忘记扩展协议在 Execute 日志中包含 Bind 参数值。
  • 在没有脱敏与严格访问控制时记录含明文密码、Bearer Token、个人数据或应用秘密的 SQL。
  • 未限制日志吞吐、磁盘、转运与保留就集群级启用 mod 或 all。

log_duration · log_connections · log_disconnections · log_parameter_max_length · log_parameter_max_length_on_error

参考资料

36 - log_statement_sample_rate

log_statement_sample_rate 定义超过 log_min_duration_sample 的语句被记录的比例。
说明

Fact — 官方简述译文:设置超过 log_min_duration_sample 的语句被记录的比例。

身份

类型 , real
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 , 01
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / When to Log
上游分类
最后 boot 值 , 1
1

生命周期

Fact
首次观测 PG13
在档版本 PG13–19 Beta 3
移除版本
引入提交 88bdbd3f7460 — Add log_statement_sample_rate parameter
提交日期 2018-11-29
Discussion 讨论 1

默认值变迁

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

机制详解

log_statement_sample_rate:设置超过 log_min_duration_sample 的语句被记录的比例。该概率只对达到 log_min_duration_sample 的语句生效,不会抽样 log_statement 或 log_min_duration_statement 的输出。

log_statement_sample_rate 属于 SUPERUSER 上下文。超级用户或获授相应 SET 权限的角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_statement_sample_rate;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_statement_sample_rate 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_statement_sample_rate 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

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 专属理由。

常见坑

  • 只在一个会话中修改 log_statement_sample_rate,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 期待它抽样所有语句日志,而实际上只控制 log_min_duration_sample。

log_min_messages · log_min_error_statement · log_min_duration_statement · log_min_duration_sample · log_transaction_sample_rate

参考资料

37 - log_temp_files

log_temp_files 决定 PostgreSQL 是否记录大于指定千字节数的临时文件使用。
说明

Fact — 官方简述译文:记录大于指定千字节数的临时文件使用。

身份

类型 , integer
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 , kB
原始单位
范围 , -12147483647
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 boot 值 , -1
-1 kB

生命周期

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

默认值变迁

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

机制详解

log_temp_files:记录大于指定千字节数的临时文件使用。临时文件删除时会记录名称与大小;-1 关闭记录,零包含每个文件。

log_temp_files 属于 SUPERUSER 上下文。超级用户或获授相应 SET 权限的角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_temp_files;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_temp_files 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_temp_files 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

Pigsty 取值

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

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

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 = 1024 (dcs);OLAP: PG9.0–19 Beta 3 = 1024 (dcs);CRIT: PG9.0–19 Beta 3 = 1024 (dcs);TINY: PG9.0–19 Beta 3 = 1024 (dcs)。 建议(待人工复核)——编辑推断:1 MiB 阈值暴露有意义的执行器溢写,同时过滤很小的临时文件。

常见坑

  • 只在一个会话中修改 log_temp_files,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 log_temp_files。

log_checkpoints · log_autovacuum_min_duration · log_lock_waits · log_lock_failures · log_replication_commands

参考资料

38 - log_timezone

log_timezone 定义日志消息使用的时区。
说明

Fact — 官方简述译文:设置日志消息使用的时区。

身份

类型 , string
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / What to Log
上游分类
最后 boot 值 , GMT
GMT

生命周期

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

默认值变迁

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

机制详解

log_timezone:设置日志消息使用的时区。它影响日志系统显示的时间戳,包括文件名展开上下文,但不改变会话 TimeZone 或已存储时间戳。

log_timezone 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 使用一个集群级时区,通常为 UTC,使所有会话的服务器日志时间戳能跨主机、副本、故障转移与集中摄取关联。修改前测试解析器与 log_filename 展开。
OLAP 分析负载类型不构成独立日志时区的理由。保持 UTC 或全局标准,只在报表工具中转换到本地民用时间,尤其要处理夏令时切换。
小规格 除非既有运维管线要求其他稳定时区,否则保持 UTC。修改 log_timezone 不会减少日志量,只会改变时间戳解释,并可能改变轮转文件名。

Pigsty 取值

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

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

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.0–19 Beta 3 = UTC (dcs);OLAP: PG9.0–19 Beta 3 = UTC (dcs);CRIT: PG9.0–19 Beta 3 = UTC (dcs);TINY: PG9.0–19 Beta 3 = UTC (dcs)。 建议(待人工复核)——编辑推断:UTC 让跨主机、区域、故障转移与集中日志系统的时间戳可以直接比较。

常见坑

  • 编辑 log_timezone 后没有重新加载配置,也没有核对有效值与后续行为。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 log_timezone。

DateStyle · IntervalStyle · TimeZone · lc_time · timezone_abbreviations

参考资料

39 - log_transaction_sample_rate

log_transaction_sample_rate 定义抽取整笔事务并记录其中所有语句的比例。
说明

Fact — 官方简述译文:设置抽取整笔事务并记录其中所有语句的比例。

身份

类型 , real
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 , 01
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / When to Log
上游分类
最后 boot 值 , 0
0

生命周期

Fact
首次观测 PG12
在档版本 PG12–19 Beta 3
移除版本
引入提交 799e220346f1 — Log all statements from a sample of transactions
提交日期 2019-04-03
Discussion

默认值变迁

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

机制详解

log_transaction_sample_rate:设置抽取整笔事务并记录其中所有语句的比例。被抽中的事务会记录其中每条语句,能够保留事务上下文,但长事务或高频事务可能造成日志突发。

log_transaction_sample_rate 属于 SUPERUSER 上下文。超级用户或获授相应 SET 权限的角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。

它改变输出的诊断数据而非查询语义,但日志量、敏感内容、log_line_prefix、目标、收集器吞吐与保留策略共同决定运维成本和价值。

调优建议

提示

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

场景 建议
OLTP 围绕明确的可观测性问题和实测日志容量预算调节 log_transaction_sample_rate;优先使用选择性阈值、抽样或角色级覆盖,而非无差别采集。
OLAP 分析作业可以需要更丰富的 log_transaction_sample_rate 遥测,但应把长语句、大绑定值与集中完成造成的日志突发计入管线容量。
小规格 让 log_transaction_sample_rate 保持有用且有界:提高详细度或频率前,先验证磁盘、收集器、保留与脱敏能力。

Pigsty 取值

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

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

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

常见坑

  • 只在一个会话中修改 log_transaction_sample_rate,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
  • 增加日志内容却未预算收集器吞吐、存储、保留与下游查询成本。
  • 记录 SQL 文本、绑定值、身份或主机数据,却没有脱敏与访问控制策略。
  • 低估高频事务被抽中后每条语句都记录所造成的突发。

log_min_messages · log_min_error_statement · log_min_duration_statement · log_min_duration_sample · log_statement_sample_rate

参考资料

40 - log_truncate_on_rotation

log_truncate_on_rotation 是 PostgreSQL 中用于轮转时截断同名的既有日志文件的参数。
说明

Fact — 官方简述译文:轮转时截断同名的既有日志文件。

身份

类型 , bool
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / Where to Log
上游分类
最后 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_truncate_on_rotation:轮转时截断同名的既有日志文件。只有按时间轮转复用既有文件名时才截断;按大小轮转等其他原因不采用同一覆盖规则。

log_truncate_on_rotation 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

实际路径由 log_destination、logging_collector 或 syslog/eventlog、文件命名与权限、轮转触发条件,以及外部转运或保留共同构成。

调优建议

提示

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

场景 建议
OLTP 只有按时间轮转有意复用文件名,且上一文件已经可靠转运或本就应被替换时,才启用 log_truncate_on_rotation;唯一时间戳名称应保持 off。
OLAP 分析日志应在重复名称被截断前确认长时间摄取已经完成;无法保证完成时使用唯一名称。
小规格 短循环可限制磁盘使用,但截断不是保留管理。监控转运与备份,避免下一次时间轮转删除唯一副本。

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.0–19 Beta 3 = on (dcs);OLAP: PG9.0–19 Beta 3 = on (dcs);CRIT: PG9.0–19 Beta 3 = on (dcs);TINY: PG9.0–19 Beta 3 = on (dcs)。 建议(待人工复核)——编辑推断:截断闭合星期文件名循环,使复用的每日名称替换上周文件,而不是无限追加。

常见坑

  • 编辑 log_truncate_on_rotation 后没有重新加载配置,也没有核对有效值与后续行为。
  • 组合互不兼容的目标、收集器、文件名与轮转假设,最终丢失或覆盖日志。
  • 未监控写满或不可写的日志目标;不同路径下它可能阻塞日志甚至数据库活动。
  • 期待所有轮转路径都截断文件;它只与按时间轮转时复用既有文件名相关。

logging_collector · log_destination · log_directory · log_filename · log_rotation_age · log_rotation_size

参考资料

41 - logging_collector

logging_collector 是 PostgreSQL 中用于启动子进程,将 stderr、csvlog 和/或 jsonlog 捕获到日志文件的参数。
说明

Fact — 官方简述译文:启动子进程,将 stderr、csvlog 和/或 jsonlog 捕获到日志文件。

身份

类型 , bool
上游 pg_settings 类型
Context , postmaster
修改后需要重启数据库
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / Where to Log
上游分类
最后 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

机制详解

logging_collector:启动子进程,将 stderr、csvlog 和/或 jsonlog 捕获到日志文件。收集器通过管道排空服务器 stderr 并写入所选文件格式;其设计目标是不丢消息,因此极端背压可能阻塞输出者。

logging_collector 属于 POSTMASTER 上下文:PostgreSQL 在服务器启动时读取它,重新加载配置或会话 SET 都不能使新值生效。

实际路径由 log_destination、logging_collector 或 syslog/eventlog、文件命名与权限、轮转触发条件,以及外部转运或保留共同构成。

调优建议

提示

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

场景 建议
OLTP 需要 csvlog/jsonlog 或收集器管理的 stderr 文件时启用 logging_collector,并压测管道吞吐、轮转、磁盘写满、转运与重启。它属于 POSTMASTER 参数,需要受控重启。
OLAP 分析负载可能在查询结束时产生大规模日志突发;按该突发为收集器与目标 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.0–19 Beta 3 = on (dcs);OLAP: PG9.0–19 Beta 3 = on (dcs);CRIT: PG9.0–19 Beta 3 = on (dcs);TINY: PG9.0–19 Beta 3 = on (dcs)。 建议(待人工复核)——编辑推断:配置的 csvlog 文件管线需要收集器,它为所有模板提供受管本地日志文件。

常见坑

  • 期待重新加载或 SET 激活 logging_collector,而它实际需要受控重启服务器。
  • 组合互不兼容的目标、收集器、文件名与轮转假设,最终丢失或覆盖日志。
  • 未监控写满或不可写的日志目标;不同路径下它可能阻塞日志甚至数据库活动。
  • 在未启用收集器时配置文件型目标,或启用收集器却没有磁盘与保留计划。

log_destination · log_directory · log_filename · log_rotation_age · log_rotation_size

参考资料

42 - silent_mode

silent_mode:让服务器以静默模式运行。实测在档范围为 PG9.0–9.1;最后在档的 PG9.1 启动默认值为 off,context 为 postmaster。它在 PG9.2 被移除。
说明

Fact — 官方简述译文:让服务器以静默模式运行。

身份

类型 , bool
上游 pg_settings 类型
Context , postmaster
修改后需要重启数据库
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / Where to Log
上游分类
最后 boot 值 , off
off

生命周期

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

默认值变迁

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

机制详解

silent_mode:让服务器以静默模式运行。该值在服务器启动时固定,修改后必须安排受控重启。 本站在 PG9.0–9.1 实测到它;boot_val 是编译或初始化基线,并不能证明某个运行集群的当前有效值。

静默模式是早期后台运行服务器时处理终端输出的便利开关。PG9.2 移除了它;现代环境应由服务管理器以及 logging_collector、log_destination、log_directory 明确管理进程和日志。

应与 logging_collector、log_destination、log_directory、log_filename 一起理解。请在目标服务器检查 SHOW 与 pg_settings,确认 source 和 pending_restart,并在修改前后对比真实负载、日志和资源指标。

调优建议

提示

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

场景 建议
OLTP 不要把这个已退出的名称加入现代 OLTP 配置。应把原意迁移到文档给出的后继参数,在连接与写并发下验证,并清理仍会输出旧名称的自动化。
OLAP 升级分析型环境前应盘点所有生成配置,把旧控制映射到后继项,并比较执行计划、吞吐、WAL 或日志行为;不能假设旧数值可直接搬用。
小规格 记录旧覆盖存在的原因后将其删除。小节点应先采用后继参数默认值,实测后再调整;未知的启动参数可能直接阻止服务器启动。

Pigsty 取值

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

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

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

常见坑

  • 把 silent_mode 的实测 boot_val 当成初始化后或托管集群当前有效值的证明。
  • 忽略 pg_settings 报告的 postmaster context,误以为修改会立即生效。
  • 孤立修改该参数,没有检查关联上限、可观测性和回滚路径。
  • 把已移除名称复制到现代 postgresql.conf,而没有迁移到文档给出的后继参数。

logging_collector · log_destination · log_directory · log_filename

参考资料

43 - syslog_facility

syslog_facility 定义启用 syslog 时使用的 facility。
说明

Fact — 官方简述译文:设置启用 syslog 时使用的 facility。

身份

类型 , enum
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 , local0, local1, local2, local3, local4, local5, local6, local7
非枚举类型记为 —
分类 , Reporting and Logging / Where to Log
上游分类
最后 boot 值 , local0
local0

生命周期

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

默认值变迁

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

机制详解

syslog_facility:设置启用 syslog 时使用的 facility。只有 log_destination 包含 syslog 时它才选择路由 facility;系统日志器再把 facility 映射到存储或转发规则。

syslog_facility 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

只有 log_destination 包含 syslog 时它才生效;随后 facility、ident、序号、拆分、主机守护进程与远端接收器共同定义记录交付。

调优建议

提示

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

场景 建议
OLTP 让 syslog_facility 匹配接收端 syslog 守护进程的路由、分帧、去重与消息大小契约,并用真实收集器验证故障转移与背压。
OLAP 以分析日志突发和多行计划测试 syslog_facility,避免拆分或接收端限制破坏记录边界。
小规格 为 syslog_facility 沿用主机既有 syslog 约定;除非有明确目的与大小限制,否则不要并行保留本地重复文件。

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 专属理由。

常见坑

  • 编辑 syslog_facility 后没有重新加载配置,也没有核对有效值与后续行为。
  • 修改 PostgreSQL 分帧或标识,却未把主机守护进程与远端接收器作为整体测试。
  • 默认假设 syslog 会保留无限消息长度、多行边界、顺序或重复记录。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 syslog_facility。

log_destination · syslog_ident · syslog_sequence_numbers · syslog_split_messages · logging_collector

参考资料

44 - syslog_ident

syslog_ident 定义在 syslog 中标识 PostgreSQL 消息的程序名。
说明

Fact — 官方简述译文:设置在 syslog 中标识 PostgreSQL 消息的程序名。

身份

类型 , string
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / Where to Log
上游分类
最后 boot 值 , postgres
postgres

生命周期

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

默认值变迁

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

机制详解

syslog_ident:设置在 syslog 中标识 PostgreSQL 消息的程序名。ident 在 syslog 中标记 PostgreSQL 记录,并可结合 facility 或主机元数据区分集群。

syslog_ident 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

只有 log_destination 包含 syslog 时它才生效;随后 facility、ident、序号、拆分、主机守护进程与远端接收器共同定义记录交付。

调优建议

提示

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

场景 建议
OLTP 让 syslog_ident 匹配接收端 syslog 守护进程的路由、分帧、去重与消息大小契约,并用真实收集器验证故障转移与背压。
OLAP 以分析日志突发和多行计划测试 syslog_ident,避免拆分或接收端限制破坏记录边界。
小规格 为 syslog_ident 沿用主机既有 syslog 约定;除非有明确目的与大小限制,否则不要并行保留本地重复文件。

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 专属理由。

常见坑

  • 编辑 syslog_ident 后没有重新加载配置,也没有核对有效值与后续行为。
  • 修改 PostgreSQL 分帧或标识,却未把主机守护进程与远端接收器作为整体测试。
  • 默认假设 syslog 会保留无限消息长度、多行边界、顺序或重复记录。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 syslog_ident。

log_destination · syslog_facility · syslog_sequence_numbers · syslog_split_messages · logging_collector

参考资料

45 - syslog_sequence_numbers

syslog_sequence_numbers 是 PostgreSQL 中用于为 syslog 消息添加序号以避免重复消息被抑制的参数。
说明

Fact — 官方简述译文:为 syslog 消息添加序号以避免重复消息被抑制。

身份

类型 , bool
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / Where to Log
上游分类
最后 boot 值 , on
on

生命周期

Fact
首次观测 PG9.6
在档版本 PG9.6–19 Beta 3
移除版本
引入提交 f4c454e9ba52 — Add syslog_sequence_numbers parameter
提交日期 2016-02-26
Discussion

默认值变迁

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

机制详解

syslog_sequence_numbers:为 syslog 消息添加序号以避免重复消息被抑制。单调递增序号前缀可防止某些 syslog 实现合并重复消息,也有助于发现缺口。

syslog_sequence_numbers 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

只有 log_destination 包含 syslog 时它才生效;随后 facility、ident、序号、拆分、主机守护进程与远端接收器共同定义记录交付。

调优建议

提示

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

场景 建议
OLTP 让 syslog_sequence_numbers 匹配接收端 syslog 守护进程的路由、分帧、去重与消息大小契约,并用真实收集器验证故障转移与背压。
OLAP 以分析日志突发和多行计划测试 syslog_sequence_numbers,避免拆分或接收端限制破坏记录边界。
小规格 为 syslog_sequence_numbers 沿用主机既有 syslog 约定;除非有明确目的与大小限制,否则不要并行保留本地重复文件。

Pigsty 取值

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

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

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

常见坑

  • 编辑 syslog_sequence_numbers 后没有重新加载配置,也没有核对有效值与后续行为。
  • 修改 PostgreSQL 分帧或标识,却未把主机守护进程与远端接收器作为整体测试。
  • 默认假设 syslog 会保留无限消息长度、多行边界、顺序或重复记录。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 syslog_sequence_numbers。

log_destination · syslog_facility · syslog_ident · syslog_split_messages · logging_collector

参考资料

46 - syslog_split_messages

syslog_split_messages 是 PostgreSQL 中用于按行并按 1024 字节限制拆分发送给 syslog 的消息的参数。
说明

Fact — 官方简述译文:按行并按 1024 字节限制拆分发送给 syslog 的消息。

身份

类型 , bool
上游 pg_settings 类型
Context , sighup
配置 reload 后生效
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / Where to Log
上游分类
最后 boot 值 , on
on

生命周期

Fact
首次观测 PG9.6
在档版本 PG9.6–19 Beta 3
移除版本
引入提交 fc201dfd9505 — Add syslog_split_messages parameter
提交日期 2016-03-15
Discussion

默认值变迁

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

机制详解

syslog_split_messages:按行并按 1024 字节限制拆分发送给 syslog 的消息。启用后 PostgreSQL 按行及传统 1024 字节限制拆分;关闭后则依赖接收端处理多行或长载荷。

syslog_split_messages 属于 SIGHUP 上下文:重新加载配置即可在不重启的情况下激活服务器新值,后续读取它的操作使用刷新值。

只有 log_destination 包含 syslog 时它才生效;随后 facility、ident、序号、拆分、主机守护进程与远端接收器共同定义记录交付。

调优建议

提示

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

场景 建议
OLTP 让 syslog_split_messages 匹配接收端 syslog 守护进程的路由、分帧、去重与消息大小契约,并用真实收集器验证故障转移与背压。
OLAP 以分析日志突发和多行计划测试 syslog_split_messages,避免拆分或接收端限制破坏记录边界。
小规格 为 syslog_split_messages 沿用主机既有 syslog 约定;除非有明确目的与大小限制,否则不要并行保留本地重复文件。

Pigsty 取值

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

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

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

常见坑

  • 编辑 syslog_split_messages 后没有重新加载配置,也没有核对有效值与后续行为。
  • 修改 PostgreSQL 分帧或标识,却未把主机守护进程与远端接收器作为整体测试。
  • 默认假设 syslog 会保留无限消息长度、多行边界、顺序或重复记录。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 syslog_split_messages。

log_destination · syslog_facility · syslog_ident · syslog_sequence_numbers · logging_collector

参考资料

47 - update_process_title

update_process_title 是 PostgreSQL 中用于更新进程标题以显示当前 SQL 命令的参数。
说明

Fact — 官方简述译文:更新进程标题以显示当前 SQL 命令。

身份

类型 , bool
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Reporting and Logging / Process Title
上游分类
最后 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

机制详解

update_process_title:更新进程标题以显示当前 SQL 命令。操作系统支持时,PostgreSQL 会随命令变化重写每个后端的进程标题,使 ps 等工具可看到当前活动。

update_process_title 属于 SUPERUSER 上下文。超级用户或获授相应 SET 权限的角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。

进程标题与 application_name、cluster_name、pg_stat_activity、log_line_prefix 相互补充,使操作系统观察能够关联数据库活动。

调优建议

提示

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

场景 建议
OLTP 除非分析证明确有显著开销,否则保持 update_process_title 启用或有值以便运维识别;使用与监控清单一致、稳定且不含秘密的标签。
OLAP 保留 update_process_title,使长作业能从操作系统与 PostgreSQL 视图中归属;更细粒度作业身份应使用 application_name。
小规格 不要为容量而调节 update_process_title。其可观测性价值通常高于微小开销,但应避免高基数或敏感标签。

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 专属理由。

常见坑

  • 只在一个会话中修改 update_process_title,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
  • 把秘密或无界高基数数据放入运维可见的进程标签。
  • 集群、应用与进程标签不一致,无法在监控系统之间关联。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 update_process_title。

application_name · cluster_name · log_line_prefix · log_timezone · log_hostname

参考资料