default_toast_compression
default_toast_compression 定义可压缩值默认使用的压缩方法。
说明
Fact — 官方简述译文:设置可压缩值默认使用的压缩方法。
身份
生命周期
| Fact | 值 |
|---|---|
| 首次观测 | PG14 |
| 在档版本 | PG14–19 Beta 3 |
| 移除版本 | 否 |
| 引入提交 | bbe0a81db69b — Allow configurable LZ4 TOAST compression. |
| 提交日期 | 2021-03-19 |
| Discussion | 讨论 1 · 讨论 2 |
默认值变迁
| 版本 | 原始 boot_val |
单位 | 人类可读值 |
|---|---|---|---|
| PG14–18 | pglz |
— | pglz |
| PG19 Beta 3 | lz4 |
— | lz4 |
机制详解
default_toast_compression:设置可压缩值默认使用的压缩方法。它为新写入的可压缩值选择 pglz,或在编译支持时选择 lz4;列级 COMPRESSION 子句优先于会话默认值。
default_toast_compression 属于 USER 上下文。获授权角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。
只有 SQL 未显式选择时它才提供默认值,因此模式迁移、对象级选项、权限与后续 ALTER 都可能覆盖它或比它更长久。
调优建议
提示
Advice。 以下建议是工作负载起点,必须用真实测量验证。
| 场景 | 建议 |
|---|---|
| OLTP | 用代表性宽值、更新率、CPU、WAL 与存储压测 pglz 和 lz4;重要模式应优先显式指定列 COMPRESSION,而非依赖意外的会话默认值。 |
| OLAP | 构建支持时 LZ4 可能更偏向快速压缩与解压,但改变新写入策略前必须测量真实可压缩性与扫描行为。 |
| 小规格 | 除非 CPU 与空间测量及软件包支持证明 lz4 合适,否则保留 pglz;改变默认值不会重压缩既有值。 |
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 专属理由。
常见坑
- 只在一个会话中修改 default_toast_compression,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
- 期待修改默认值会重写既有对象或覆盖显式 DDL 子句。
- 忽略表空间权限、已安装访问方法或压缩支持,以及恢复可移植性。
- 没有回滚计划及客户端或运维兼容测试,就全局修改 default_toast_compression。
关联参数
default_table_access_method · default_tablespace · temp_tablespaces · check_function_bodies · maintenance_work_mem