首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL中的索引填充因子和索引页

PostgreSQL中的索引填充因子和索引页
EN

Database Administration用户
提问于 2020-08-25 09:00:45
回答 1查看 393关注 0票数 0
  1. postgres文档表示,索引填充因素会影响“索引页”,并表示“对于更新频繁的表,较小的填充因子更好”。我很困惑,它是关于更新索引值还是行中的任何值?
  2. 表填充因子是否覆盖表的索引填充因子(是否定义了索引填充因子( btree索引的默认值为90 )?

PostgreSQL文档中的填充因子:

表填充因子:

表的填充因子是介于10到100之间的百分比。100 (完整包装)是默认的。如果指定了较小的填充因子,则只将操作包表页插入到指定的百分比;每个页上的剩余空间用于更新该页上的行。这使UPDATE有机会将已更新的行副本放置在与原始页相同的页面上,这比将其放置在不同的页面上更有效。对于一个从未更新过条目的表,完全打包是最好的选择,但是在更新频繁的表中,较小的填充因子是合适的。不能为吐司表设置此参数。

指数填充因子:

索引的填充因子是确定索引方法将尝试打包索引页的填充程度的百分比。对于B树,叶页在初始索引生成期间和在右侧扩展索引(添加新的最大键值)时填充到此百分比。如果页面随后变得完全满,它们将被分割,导致索引的效率逐渐下降。B-树使用默认的填充因子90,但是可以选择从10到100的任何整数值。如果表是静态的,那么填充因子100是最小化索引物理大小的最佳方法,但是对于更新频繁的表,较小的填充因子更好地减少对分页的需求。其他索引方法以不同但大致相似的方式使用填充因子;默认的填充因子在方法之间有所不同。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2020-08-25 13:58:09

表和索引fillfactor是相互独立的。

表和索引都存储在操作系统上的文件中。这些文件被组织成8KB块。fillfactor确定这些块在多大程度上是由INSERT填充的(对于表而言),或者在右侧(对于索引)的初始创建或扩展。

尽管表和索引上的fillfactors是独立的,但是对于表和索引来说,设置较低值的指示是相似的:如果表收到许多更新。请记住,许多表修改也会导致索引修改。

请注意,只有在没有对更新的列进行索引的情况下,表中较低的fillfactor才会有所帮助。否则,这只是浪费空间。

如果满足上述条件,并且该表接收许多更新,我将在表上设置一个较低的fillfactor。我不会在索引上设置更低的fillfactor,除非我看到一个索引经常被许多更新分割。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/274296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档