log_parameter_max_length
log_parameter_max_length 定义记录语句时绑定参数值可写入日志的最大字节数。
说明
Fact — 官方简述译文:设置记录语句时绑定参数值可写入日志的最大字节数。
身份
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG13 |
| 在档版本 | PG13–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | 0b34e7d307e6 — Improve user control over truncation of logged bind-parameter values. |
| 提交日期 | 2020-04-02 |
| Discussion | 讨论 1 |
默认值变迁
| 版本 | 原始 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