default_toast_compression 是一个 配置参数,用于确定新创建表列的默认 TOAST 压缩方法。
default_toast_compression 在 PostgreSQL 14 中引入。
用法
default_toast_compression 可以是以下值之一:
pglzlz4
请注意,使用 lz4 需要 PostgreSQL 在编译时使用了选项 --with-lz4。
要确定 lz4 是否可用,请执行以下查询:
postgres=# SELECT true FROM pg_config WHERE name = 'LIBS' and setting like '%lz4%'; bool ------ t (1 row)
默认值
default_toast_compression 的默认值为:pglz。
按 PostgreSQL 版本详细信息
default_toast_compression (PostgreSQL 19)
| 设置 | pglz |
| 单位 | |
| 类别 | 客户端连接默认值 / 语句行为 |
| 简短描述 | 设置可压缩值的默认压缩方法。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | pglz |
| 启动值 | pglz |
| 重置值 | pglz |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
default_toast_compression (PostgreSQL 18)
| 设置 | pglz |
| 单位 | |
| 类别 | 客户端连接默认值 / 语句行为 |
| 简短描述 | 设置可压缩值的默认压缩方法。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | pglz |
| 启动值 | pglz |
| 重置值 | pglz |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
default_toast_compression (PostgreSQL 17)
| 设置 | pglz |
| 单位 | |
| 类别 | 客户端连接默认值 / 语句行为 |
| 简短描述 | 设置可压缩值的默认压缩方法。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | pglz |
| 启动值 | pglz |
| 重置值 | pglz |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
default_toast_compression (PostgreSQL 16)
| 设置 | pglz |
| 单位 | |
| 类别 | 客户端连接默认值 / 语句行为 |
| 简短描述 | 设置可压缩值的默认压缩方法。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | pglz |
| 启动值 | pglz |
| 重置值 | pglz |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
default_toast_compression (PostgreSQL 15)
| 设置 | pglz |
| 单位 | |
| 类别 | 客户端连接默认值 / 语句行为 |
| 简短描述 | 设置可压缩值的默认压缩方法。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | pglz |
| 启动值 | pglz |
| 重置值 | pglz |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
default_toast_compression (PostgreSQL 14)
| 设置 | pglz |
| 单位 | |
| 类别 | 客户端连接默认值 / 语句行为 |
| 简短描述 | 设置可压缩值的默认压缩方法。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | enum |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | pglz |
| 启动值 | pglz |
| 重置值 | pglz |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
变更历史
- PostgreSQL 14
- 添加于 (commit bbe0a81d)
示例
默认情况下,TOASTable 表将以 pglz 压缩类型创建。
postgres=# CREATE TABLE foo (val1 TEXT);
CREATE TABLE
postgres=# \d+ foo
Table "public.foo"
Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description
--------+------+-----------+----------+---------+----------+-------------+--------------+-------------
val1 | text | | | | extended | pglz | |
Access method: heap
将 default_toast_compression 设置为 lz4 (如果可用)
postgres=# ALTER SYSTEM SET default_toast_compression='lz4';
ALTER SYSTEM
postgres=# SELECT pg_reload_conf();
pg_reload_conf
----------------
t
(1 row)
postgres=# ALTER TABLE foo ADD val2 TEXT;
ALTER TABLE
postgres=# \d+ foo
Table "public.foo"
Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description
--------+------+-----------+----------+---------+----------+-------------+--------------+-------------
val1 | text | | | | extended | pglz | |
val2 | text | | | | extended | lz4 | |
Access method: heap
请注意,只有当 PostgreSQL 在编译时使用了 --with-lz4 选项时,default_toast_compression 才能设置为 lz4,否则会引发错误。
postgres=# ALTER SYSTEM SET default_toast_compression='lz4'; ERROR: invalid value for parameter "default_toast_compression": "lz4" HINT: Available values: pglz
参考资料
- PostgreSQL 文档: default_toast_compression
有用链接
- 可配置的 LZ4 TOAST 压缩 - 2021 年 5 月 EDB 的 Dilip Kumar 撰写的博文
