↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / 存储参数 / B-tree 索引

fillfactor

B-tree填充因子

控制索引方法尝试将索引页填充到多满。对于 B-树,在初始构建索引时,以及在右侧扩展索引(加入新的最大键值)时,叶子页都会填充到这一百分比。如果页面随后变成全满,就会发生分裂,从而导致磁盘上的索引结构碎片化。B-树默认使用 90 的填充因子,但也可以选择 10 到 100 之间的任意整数值。 对预计会有大量插入和/或更新的表,在 CREATE INDEX 时为 B-树索引设置较低的填充因子会有好处(即在向表批量装载数据之后)。50 到 90 范围内的值可以有效地“平滑”B-树索引生命周期早期页面分裂的速率(这样降低填充因子甚至可能减少页面分裂的绝对数量,不过这一效果高度依赖工作负载)。第 65.1.4.2 节中描述的 B-树自底向上索引删除技术依赖于页面上有一些“额外”空间来存储“额外”的元组版本,因此也会受到填充因子影响(不过通常影响不大)。 在某些其他特定情况下,在 CREATE INDEX 时将填充因子提高到 100 可能有助于最大化空间利用率。只有在完全确定该表是静态的(即永远不会受到插入或更新影响)时,才应考虑这样做。否则,将填充因子设为 100 有损害性能的风险:即便只有少量更新或插入,也会导致页面突然大量分裂。 其他索引方法以不同但大致类似的方式使用填充因子;默认填充因子因方法而异。

当前查看 PostgreSQL 18。

中文定义与说明

控制索引方法尝试将索引页填充到多满。对于 B-树,在初始构建索引时,以及在右侧扩展索引(加入新的最大键值)时,叶子页都会填充到这一百分比。如果页面随后变成全满,就会发生分裂,从而导致磁盘上的索引结构碎片化。B-树默认使用 90 的填充因子,但也可以选择 10 到 100 之间的任意整数值。

对预计会有大量插入和/或更新的表,在 CREATE INDEX 时为 B-树索引设置较低的填充因子会有好处(即在向表批量装载数据之后)。50 到 90 范围内的值可以有效地“平滑”B-树索引生命周期早期页面分裂的速率(这样降低填充因子甚至可能减少页面分裂的绝对数量,不过这一效果高度依赖工作负载)。第 65.1.4.2 节中描述的 B-树自底向上索引删除技术依赖于页面上有一些“额外”空间来存储“额外”的元组版本,因此也会受到填充因子影响(不过通常影响不大)。

在某些其他特定情况下,在 CREATE INDEX 时将填充因子提高到 100 可能有助于最大化空间利用率。只有在完全确定该表是静态的(即永远不会受到插入或更新影响)时,才应考虑这样做。否则,将填充因子设为 100 有损害性能的风险:即便只有少量更新或插入,也会导致页面突然大量分裂。

其他索引方法以不同但大致类似的方式使用填充因子;默认填充因子因方法而异。

说明

控制索引方法尝试将索引页填充到多满。对于 B-树,在初始构建索引时,以及在右侧扩展索引(加入新的最大键值)时,叶子页都会填充到这一百分比。如果页面随后变成全满,就会发生分裂,从而导致磁盘上的索引结构碎片化。B-树默认使用 90 的填充因子,但也可以选择 10 到 100 之间的任意整数值。 对预计会有大量插入和/或更新的表,在 CREATE INDEX 时为 B-树索引设置较低的填充因子会有好处(即在向表批量装载数据之后)。50 到 90 范围内的值可以有效地“平滑”B-树索引生命周期早期页面分裂的速率(这样降低填充因子甚至可能减少页面分裂的绝对数量,不过这一效果高度依赖工作负载)。第 65.1.4.2 节中描述的 B-树自底向上索引删除技术依赖于页面上有一些“额外”空间来存储“额外”的元组版本,因此也会受到填充因子影响(不过通常影响不大)。 在某些其他特定情况下,在 CREATE INDEX 时将填充因子提高到 100 可能有助于最大化空间利用率。只有在完全确定该表是静态的(即永远不会受到插入或更新影响)时,才应考虑这样做。否则,将填充因子设为 100 有损害性能的风险:即便只有少量更新或插入,也会导致页面突然大量分裂。 其他索引方法以不同但大致类似的方式使用填充因子;默认填充因子因方法而异。

适用对象
B-tree 索引
取值类型
整数
默认值
90
取值范围
10–100(百分比)

用法

WITH (fillfactor = value)

索引访问方法

此条目适用于 B-tree 索引。使用 CREATE INDEX 的 WITH 子句设置,或用 ALTER INDEX SET 修改已有索引。参数的行为、默认值与适用范围应按该索引方法阅读。

相关条目

文档与源码

查看来源构建
版本
18.6
构建
Local English manual 18.6
来源指纹
eb6c2292fdf28e1b4635ab478eec3919411cdf4a6c07553387870e26201f3744

同类条目

返回存储参数 · 此条目的收录范围为 PostgreSQL 10 至 20;起点不一定是实际引入版本。