跳转到主要内容

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

参考资料