在 Postgres 中,可以为索引和表设置填充因子。有什么不同?如何决定两者的值。有哪些用例?
我正在尝试对空间索引上的空间关系进行聚类。它有几百万条记录。尽管每天创建的新记录很少,但记录一直在更新。
用例是空间范围查询。表填充因子和/或索引填充因子的好值是多少?
小智 16
从CREATE TABLE 手册页(强调添加):
表的填充因子是 10 到 100 之间的百分比。100(完全填充)是默认值。当指定较小的填充因子时,INSERT 操作仅将表页打包到指定的百分比;每页上的剩余空间保留用于更新该页上的行。这使 UPDATE 有机会将行的更新副本放置在与原始页面相同的页面上,这比将其放置在不同的页面上效率更高。对于条目从不更新的表,完全填充是最佳选择,但在大量更新的表中,较小的填充因子是合适的。
从CREATE INDEX 手册页(强调添加):
索引的填充因子是一个百分比,它决定了索引方法将尝试打包索引页的填充程度。对于 B 树,在初始索引构建期间以及在右侧扩展索引(最大键值)时,叶页会填充到此百分比。如果页面随后变得完全充满,它们将被拆分,导致索引效率逐渐下降。B 树使用默认填充因子 90,但可以选择 10 到 100 之间的任何值。如果表是静态的,那么填充因子 100 最好最小化索引的物理大小,但对于更新频繁的表,较小的填充因子更好地最小化页面拆分的需要。其他索引方法以不同但大致相似的方式使用填充因子;默认填充因子因方法而异。
归档时间: |
|
查看次数: |
10699 次 |
最近记录: |