pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
百科 / 存储参数
存储参数按对象设置,控制表、TOAST、索引和视图的行为。同名参数在不同对象上可能有不同的默认值与限制;这里分别列出适用对象和各版本手册的说明。
当前查看 PostgreSQL 18。
共 60 个条目,PostgreSQL 18 收录 56 个。
| 名称与用途 | 分类 | 版本记录 |
|---|---|---|
| deduplicate_itemsB-tree 索引去重 控制是否使用第 65.1.4.3 节中描述的 B-树去重技术。设置为 ON 或 OFF 可启用或禁用该优化。(ON 和 OFF 的其他拼写形式也被接受,如第 19.1 节所述。)默认值为 ON。 注意 通过 ALTER INDEX 关闭 deduplicate_items 可以防止将来的插入触发去重,但这本身不会让现有倒排列表元组改用标准的元组表示。 |
B-tree 索引 | |
| fillfactorB-tree填充因子 控制索引方法尝试将索引页填充到多满。对于 B-树,在初始构建索引时,以及在右侧扩展索引(加入新的最大键值)时,叶子页都会填充到这一百分比。如果页面随后变成全满,就会发生分裂,从而导致磁盘上的索引结构碎片化。B-树默认使用 90 的填充因子,但也可以选择 10 到 100 之间的任意整数值。 对预计会有大量插入和/或更新的表,在 CREATE INDEX 时为 B-树索引设置较低的填充因子会有好处(即在向表批量装载数据之后)。50 到 90 范围内的值可以有效地“平滑”B-树索引生命周期早期页面分裂的速率(这样降低填充因子甚至可能减少页面分裂的绝对数量,不过这一效果高度依赖工作负载)。第 65.1.4.2 节中描述的 B-树自底向上索引删除技术依赖于页面上有一些“额外”空间来存储“额外”的元组版本,因此也会受到填充因子影响(不过通常影响不大)。 在某些其他特定情况下,在 CREATE INDEX 时将填充因子提高到 100 可能有助于最大化空间利用率。只有在完全确定该表是静态的(即永远不会受到插入或更新影响)时,才应考虑这样做。否则,将填充因子设为 100 有损害性能的风险:即便只有少量更新或插入,也会导致页面突然大量分裂。 其他索引方法以不同但大致类似的方式使用填充因子;默认填充因子因方法而异。 |
B-tree 索引 | |
| vacuum_cleanup_index_scale_factorB-tree 清理比例因子 每个索引的 vacuum_cleanup_index_scale_factor 值。 |
B-tree 索引此版未收录 | |
| autosummarizeBRIN 自动汇总 定义当在下一页范围检测到插入时,是否为前一页范围排队执行一次范围摘要操作(详见第 65.5.1.1 节)。默认值为 off。 |
BRIN 索引 | |
| pages_per_rangeBRIN 每范围页数 定义每个 BRIN 索引项对应的一个块范围由多少个表块组成(详见第 65.5.1 节)。默认值为 128。 |
BRIN 索引 | |
| fastupdateGIN 快速更新 控制第 65.4.4.1 节中描述的快速更新技术的使用。ON 启用快速更新,OFF 禁用快速更新。默认值为 ON。 注意 通过 ALTER INDEX 关闭 fastupdate 会阻止后续插入进入待处理索引项列表,但这本身不会将现有条目移出待处理列表。之后可能需要对该表执行 VACUUM,或调用 gin_clean_pending_list 函数,以确保待处理列表被清空。 |
GIN 索引 | |
| gin_pending_list_limitGIN 待处理列表上限 为该索引覆盖 gin_pending_list_limit 的全局设置。该值以千字节为单位。 |
GIN 索引 | |
| bufferingGiST 缓冲构建 控制是否使用第 65.2.4.1 节中描述的缓冲构建技术来构建索引。设置为 OFF 时禁用缓冲构建,设置为 ON 时启用,设置为 AUTO 时初始为禁用,但一旦索引大小达到 effective_cache_size,就会在运行过程中启用。默认值为 AUTO。注意,如果可以使用排序构建,则除非指定 buffering=ON,否则会改用排序构建而不是缓冲构建。 |
GiST 索引 | |
| fillfactorGiST填充因子 控制索引方法尝试将索引页填充到多满。对于 B-树,在初始构建索引时,以及在右侧扩展索引(加入新的最大键值)时,叶子页都会填充到这一百分比。如果页面随后变成全满,就会发生分裂,从而导致磁盘上的索引结构碎片化。B-树默认使用 90 的填充因子,但也可以选择 10 到 100 之间的任意整数值。 对预计会有大量插入和/或更新的表,在 CREATE INDEX 时为 B-树索引设置较低的填充因子会有好处(即在向表批量装载数据之后)。50 到 90 范围内的值可以有效地“平滑”B-树索引生命周期早期页面分裂的速率(这样降低填充因子甚至可能减少页面分裂的绝对数量,不过这一效果高度依赖工作负载)。第 65.1.4.2 节中描述的 B-树自底向上索引删除技术依赖于页面上有一些“额外”空间来存储“额外”的元组版本,因此也会受到填充因子影响(不过通常影响不大)。 在某些其他特定情况下,在 CREATE INDEX 时将填充因子提高到 100 可能有助于最大化空间利用率。只有在完全确定该表是静态的(即永远不会受到插入或更新影响)时,才应考虑这样做。否则,将填充因子设为 100 有损害性能的风险:即便只有少量更新或插入,也会导致页面突然大量分裂。 其他索引方法以不同但大致类似的方式使用填充因子;默认填充因子因方法而异。 |
GiST 索引 | |
| fillfactorHash填充因子 控制索引方法尝试将索引页填充到多满。对于 B-树,在初始构建索引时,以及在右侧扩展索引(加入新的最大键值)时,叶子页都会填充到这一百分比。如果页面随后变成全满,就会发生分裂,从而导致磁盘上的索引结构碎片化。B-树默认使用 90 的填充因子,但也可以选择 10 到 100 之间的任意整数值。 对预计会有大量插入和/或更新的表,在 CREATE INDEX 时为 B-树索引设置较低的填充因子会有好处(即在向表批量装载数据之后)。50 到 90 范围内的值可以有效地“平滑”B-树索引生命周期早期页面分裂的速率(这样降低填充因子甚至可能减少页面分裂的绝对数量,不过这一效果高度依赖工作负载)。第 65.1.4.2 节中描述的 B-树自底向上索引删除技术依赖于页面上有一些“额外”空间来存储“额外”的元组版本,因此也会受到填充因子影响(不过通常影响不大)。 在某些其他特定情况下,在 CREATE INDEX 时将填充因子提高到 100 可能有助于最大化空间利用率。只有在完全确定该表是静态的(即永远不会受到插入或更新影响)时,才应考虑这样做。否则,将填充因子设为 100 有损害性能的风险:即便只有少量更新或插入,也会导致页面突然大量分裂。 其他索引方法以不同但大致类似的方式使用填充因子;默认填充因子因方法而异。 |
Hash 索引 | |
| fillfactorSP-GiST填充因子 控制索引方法尝试将索引页填充到多满。对于 B-树,在初始构建索引时,以及在右侧扩展索引(加入新的最大键值)时,叶子页都会填充到这一百分比。如果页面随后变成全满,就会发生分裂,从而导致磁盘上的索引结构碎片化。B-树默认使用 90 的填充因子,但也可以选择 10 到 100 之间的任意整数值。 对预计会有大量插入和/或更新的表,在 CREATE INDEX 时为 B-树索引设置较低的填充因子会有好处(即在向表批量装载数据之后)。50 到 90 范围内的值可以有效地“平滑”B-树索引生命周期早期页面分裂的速率(这样降低填充因子甚至可能减少页面分裂的绝对数量,不过这一效果高度依赖工作负载)。第 65.1.4.2 节中描述的 B-树自底向上索引删除技术依赖于页面上有一些“额外”空间来存储“额外”的元组版本,因此也会受到填充因子影响(不过通常影响不大)。 在某些其他特定情况下,在 CREATE INDEX 时将填充因子提高到 100 可能有助于最大化空间利用率。只有在完全确定该表是静态的(即永远不会受到插入或更新影响)时,才应考虑这样做。否则,将填充因子设为 100 有损害性能的风险:即便只有少量更新或插入,也会导致页面突然大量分裂。 其他索引方法以不同但大致类似的方式使用填充因子;默认填充因子因方法而异。 |
SP-GiST 索引 | |
| toast.autovacuum_enabledTOAST 启用自动清理 为特定表启用或禁用自动清理守护进程。如果为真,自动清理守护进程将按照第 24.1.6 节中讨论的规则,在该表上执行自动 VACUUM 和/或 ANALYZE 操作。如果为假,则该表不会被自动清理,但为了防止事务 ID 回卷,仍可能对其执行自动清理。有关回卷防护的更多信息,见第 24.1.5 节。注意,如果 autovacuum 参数为假,则自动清理守护进程根本不会运行(防止事务 ID 回卷的情况除外);为单独表设置存储参数也不会覆盖这一点。因此,显式将此存储参数设为 true 往往意义不大,设为 false 才更有用。 |
TOAST 表 | |
| toast.autovacuum_freeze_max_ageTOAST 事务 ID 强制冻结年龄 autovacuum_freeze_max_age 参数的每表取值。注意,自动清理会忽略大于系统范围设置的每表 autovacuum_freeze_max_age 参数(它只能设置得更小)。 |
TOAST 表 | |
| toast.autovacuum_freeze_min_ageTOAST 事务 ID 最小冻结年龄 vacuum_freeze_min_age 参数的每表取值。注意,自动清理会忽略大于系统范围 autovacuum_freeze_max_age 设置一半的每表 autovacuum_freeze_min_age 参数。 |
TOAST 表 | |
| toast.autovacuum_freeze_table_ageTOAST 事务 ID 全表冻结年龄 vacuum_freeze_table_age 参数的每表取值。 |
TOAST 表 | |
| toast.autovacuum_multixact_freeze_max_ageTOAST 多事务 ID 强制冻结年龄 autovacuum_multixact_freeze_max_age 参数的每表取值。注意,自动清理会忽略大于系统范围设置的每表 autovacuum_multixact_freeze_max_age 参数(它只能设置得更小)。 |
TOAST 表 | |
| toast.autovacuum_multixact_freeze_min_ageTOAST 多事务 ID 最小冻结年龄 vacuum_multixact_freeze_min_age 参数的每表取值。注意,自动清理会忽略大于系统范围 autovacuum_multixact_freeze_max_age 设置一半的每表 autovacuum_multixact_freeze_min_age 参数。 |
TOAST 表 | |
| toast.autovacuum_multixact_freeze_table_ageTOAST 多事务 ID 全表冻结年龄 vacuum_multixact_freeze_table_age 参数的每表取值。 |
TOAST 表 | |
| toast.autovacuum_vacuum_cost_delayTOAST 自动清理代价延迟 autovacuum_vacuum_cost_delay 参数的每表取值。 |
TOAST 表 | |
| toast.autovacuum_vacuum_cost_limitTOAST 自动清理代价上限 autovacuum_vacuum_cost_limit 参数的每表取值。 |
TOAST 表 | |
| toast.autovacuum_vacuum_insert_scale_factorTOAST 插入触发清理比例因子 autovacuum_vacuum_insert_scale_factor 参数的每表取值。 |
TOAST 表 | |
| toast.autovacuum_vacuum_insert_thresholdTOAST 插入触发清理基础阈值 autovacuum_vacuum_insert_threshold 参数的每表取值。特殊值 -1 可用于禁用该表上的由插入触发的清理。 |
TOAST 表 | |
| toast.autovacuum_vacuum_max_thresholdTOAST 自动清理阈值上限 autovacuum_vacuum_max_threshold 参数的每表取值。 |
TOAST 表 | |
| toast.autovacuum_vacuum_scale_factorTOAST 自动清理比例因子 autovacuum_vacuum_scale_factor 参数的每表取值。 |
TOAST 表 | |
| toast.autovacuum_vacuum_thresholdTOAST 自动清理基础阈值 autovacuum_vacuum_threshold 参数的每表取值。 |
TOAST 表 | |
| toast.log_autovacuum_min_durationTOAST 自动清理日志时长阈值 log_autovacuum_min_duration 参数的每表取值。 |
TOAST 表 | |
| toast.vacuum_index_cleanupTOAST 清理索引死元组 强制或禁用在该表上执行 VACUUM 时的索引清理。默认值为 AUTO。设为 OFF 时禁用索引清理,设为 ON 时启用,设为 AUTO 时,则每次运行 VACUUM 都会动态决定。动态行为允许 VACUUM 避免为了移除很少的死元组而无谓地扫描索引。强制禁用全部索引清理可以显著加快 VACUUM,但如果表修改频繁,也可能导致索引严重膨胀。若在 VACUUM 中指定了 INDEX_CLEANUP 参数,则会覆盖此选项的值。 |
TOAST 表 | |
| toast.vacuum_max_eager_freeze_failure_rateTOAST 提前冻结失败比例上限 vacuum_max_eager_freeze_failure_rate 参数的每表取值。 |
TOAST 表 | |
| toast.vacuum_truncateTOAST 截断尾部空页 vacuum_truncate 参数的每表取值。若 VACUUM 指定了 TRUNCATE 参数,将覆盖此选项的值。 |
TOAST 表 | |
| autovacuum_analyze_scale_factor自动分析比例因子 autovacuum_analyze_scale_factor 参数的每表取值。 |
表与物化视图 | |
| autovacuum_analyze_threshold自动分析基础阈值 autovacuum_analyze_threshold 参数的每表取值。 |
表与物化视图 | |
| autovacuum_enabled启用自动清理 为特定表启用或禁用自动清理守护进程。如果为真,自动清理守护进程将按照第 24.1.6 节中讨论的规则,在该表上执行自动 VACUUM 和/或 ANALYZE 操作。如果为假,则该表不会被自动清理,但为了防止事务 ID 回卷,仍可能对其执行自动清理。有关回卷防护的更多信息,见第 24.1.5 节。注意,如果 autovacuum 参数为假,则自动清理守护进程根本不会运行(防止事务 ID 回卷的情况除外);为单独表设置存储参数也不会覆盖这一点。因此,显式将此存储参数设为 true 往往意义不大,设为 false 才更有用。 |
表与物化视图 | |
| autovacuum_freeze_max_age事务 ID 强制冻结年龄 autovacuum_freeze_max_age 参数的每表取值。注意,自动清理会忽略大于系统范围设置的每表 autovacuum_freeze_max_age 参数(它只能设置得更小)。 |
表与物化视图 | |
| autovacuum_freeze_min_age事务 ID 最小冻结年龄 vacuum_freeze_min_age 参数的每表取值。注意,自动清理会忽略大于系统范围 autovacuum_freeze_max_age 设置一半的每表 autovacuum_freeze_min_age 参数。 |
表与物化视图 | |
| autovacuum_freeze_table_age事务 ID 全表冻结年龄 vacuum_freeze_table_age 参数的每表取值。 |
表与物化视图 | |
| autovacuum_multixact_freeze_max_age多事务 ID 强制冻结年龄 autovacuum_multixact_freeze_max_age 参数的每表取值。注意,自动清理会忽略大于系统范围设置的每表 autovacuum_multixact_freeze_max_age 参数(它只能设置得更小)。 |
表与物化视图 | |
| autovacuum_multixact_freeze_min_age多事务 ID 最小冻结年龄 vacuum_multixact_freeze_min_age 参数的每表取值。注意,自动清理会忽略大于系统范围 autovacuum_multixact_freeze_max_age 设置一半的每表 autovacuum_multixact_freeze_min_age 参数。 |
表与物化视图 | |
| autovacuum_multixact_freeze_table_age多事务 ID 全表冻结年龄 vacuum_multixact_freeze_table_age 参数的每表取值。 |
表与物化视图 | |
| autovacuum_parallel_workers自动清理并行工作进程数 autovacuum_max_parallel_workers 参数的每表取值。若指定为 -1,则使用 autovacuum_max_parallel_workers 的值。若设为 0,则对该表禁用并行清理。默认值为 -1。 |
表与物化视图此版未收录 | |
| autovacuum_vacuum_cost_delay自动清理代价延迟 autovacuum_vacuum_cost_delay 参数的每表取值。 |
表与物化视图 | |
| autovacuum_vacuum_cost_limit自动清理代价上限 autovacuum_vacuum_cost_limit 参数的每表取值。 |
表与物化视图 | |
| autovacuum_vacuum_insert_scale_factor插入触发清理比例因子 autovacuum_vacuum_insert_scale_factor 参数的每表取值。 |
表与物化视图 | |
| autovacuum_vacuum_insert_threshold插入触发清理基础阈值 autovacuum_vacuum_insert_threshold 参数的每表取值。特殊值 -1 可用于禁用该表上的由插入触发的清理。 |
表与物化视图 | |
| autovacuum_vacuum_max_threshold自动清理阈值上限 autovacuum_vacuum_max_threshold 参数的每表取值。 |
表与物化视图 | |
| autovacuum_vacuum_scale_factor自动清理比例因子 autovacuum_vacuum_scale_factor 参数的每表取值。 |
表与物化视图 | |
| autovacuum_vacuum_threshold自动清理基础阈值 autovacuum_vacuum_threshold 参数的每表取值。 |
表与物化视图 | |
| fillfactor表填充因子 表的填充因子是介于 10 和 100 之间的百分比。100(完全填充)是默认值。当指定较小的填充因子时,INSERT 操作只会把表页填充到指定百分比;每页剩余的空间则预留给更新该页上的行。这使得 UPDATE 有机会将更新后的行副本放在与原始行相同的页上,这比放在不同页上更高效,也更有可能发生堆内元组更新。对于条目永远不会更新的表,完全填充是最佳选择;但对频繁更新的表来说,较小的填充因子更合适。不能为 TOAST 表设置此参数。 |
表与物化视图 | |
| log_autoanalyze_min_duration自动分析日志时长阈值 log_autoanalyze_min_duration 参数的每表取值。 |
表与物化视图此版未收录 | |
| log_autovacuum_min_duration自动清理日志时长阈值 log_autovacuum_min_duration 参数的每表取值。 |
表与物化视图 | |
| parallel_workers并行扫描工作进程数 该参数设置在对该表执行并行扫描时用于辅助扫描的工作进程数量。若未设置,系统会根据关系大小决定一个值。规划器或使用并行扫描的实用命令实际选择的工作进程数量可能更少,例如可能受 max_worker_processes 设置所限。 |
表与物化视图 | |
| toast_tuple_targetTOAST 元组目标长度 toast_tuple_target 指定在尝试压缩和/或将长列值移入 TOAST 表之前所需的最小元组长度,同时也是一旦开始 TOAST 化后试图将长度缩减到其以下的目标长度。这会影响标记为 External(用于移动)、Main(用于压缩)或 Extended(用于两者)的列,并且只适用于新元组。对现有行没有影响。默认情况下,该参数被设置为至少允许每个块容纳 4 个元组,在默认块大小下即为 2040 字节。有效值介于 128 字节与(块大小减去页头)之间,默认上限为 8160 字节。对非常短或非常长的行,修改该值可能没有帮助。注意,默认设置通常已经接近最佳,某些情况下设置该参数可能产生负面影响。不能为 TOAST 表设置此参数。 |
表与物化视图 | |
| toast_value_typeTOAST 值标识符类型 指定为此表创建 TOAST 关系时使用的 chunk_id 属性类型。默认值为 oid;oid8 改为分配 oid8,它以每个行外指针多占用四字节为代价,允许更多不同的经过 TOAST 处理的值。不能为 TOAST 表设置此参数。 仅在创建 TOAST 关系时才会读取此值。之后更改它对现有的 TOAST 关系没有影响,CLUSTER、REPACK 或 VACUUM FULL 等表重写操作也会保留已经使用的类型。而转储和恢复会重新创建 TOAST 关系,因此会应用此参数的当前值。 |
表与物化视图此版未收录 | |
| user_catalog_table用户目录表 将该表声明为逻辑复制用途的附加目录表。详见第 47.7.2 节。不能为 TOAST 表设置此参数。 |
表与物化视图 | |
| vacuum_index_cleanup清理索引死元组 强制或禁用在该表上执行 VACUUM 时的索引清理。默认值为 AUTO。设为 OFF 时禁用索引清理,设为 ON 时启用,设为 AUTO 时,则每次运行 VACUUM 都会动态决定。动态行为允许 VACUUM 避免为了移除很少的死元组而无谓地扫描索引。强制禁用全部索引清理可以显著加快 VACUUM,但如果表修改频繁,也可能导致索引严重膨胀。若在 VACUUM 中指定了 INDEX_CLEANUP 参数,则会覆盖此选项的值。 |
表与物化视图 | |
| vacuum_max_eager_freeze_failure_rate提前冻结失败比例上限 vacuum_max_eager_freeze_failure_rate 参数的每表取值。 |
表与物化视图 | |
| vacuum_truncate截断尾部空页 vacuum_truncate 参数的每表取值。若 VACUUM 指定了 TRUNCATE 参数,将覆盖此选项的值。 |
表与物化视图 | |
| oids行 OID 兼容选项 该子句为表或索引指定可选的存储参数;详见下文 Storage Parameters。为了向后兼容,表的 WITH 子句还可以包含 OIDS=FALSE,以指定新表的行不应包含 OID(对象标识符);OIDS=TRUE 已不再受支持。 |
表兼容选项 | |
| check_option视图检查选项 此参数可以是 local 或 cascaded,等同于指定 WITH [ CASCADED | LOCAL ] CHECK OPTION(见下文)。 |
视图选项 | |
| security_barrier视图安全屏障 如果该视图旨在提供行级安全,则应使用此选项。详见第 39.5 节。 |
视图选项 | |
| security_invoker以调用者权限访问视图 该选项会根据视图使用者而非视图所有者的权限来检查底层基关系。完整细节见下文注解。 |
视图选项 |
已收录首次出现接口或属性变化不再收录
版本方格表示本次采样中的记录;最早收录版本不一定是实际引入版本。点击方格查看对应版本的说明与来源。
对象级参数通常在 CREATE 的 WITH 子句或 ALTER 的 SET 子句中设置。它们与会话、实例级配置参数的作用范围不同;是否需要重写数据或重建索引,以条目的说明为准。