PostgreSQL文档中的填充因子:
表的填充因子是介于10到100之间的百分比。100 (完整包装)是默认的。如果指定了较小的填充因子,则只将操作包表页插入到指定的百分比;每个页上的剩余空间用于更新该页上的行。这使UPDATE有机会将已更新的行副本放置在与原始页相同的页面上,这比将其放置在不同的页面上更有效。对于一个从未更新过条目的表,完全打包是最好的选择,但是在更新频繁的表中,较小的填充因子是合适的。不能为吐司表设置此参数。
索引的填充因子是确定索引方法将尝试打包索引页的填充程度的百分比。对于B树,叶页在初始索引生成期间和在右侧扩展索引(添加新的最大键值)时填充到此百分比。如果页面随后变得完全满,它们将被分割,导致索引的效率逐渐下降。B-树使用默认的填充因子90,但是可以选择从10到100的任何整数值。如果表是静态的,那么填充因子100是最小化索引物理大小的最佳方法,但是对于更新频繁的表,较小的填充因子更好地减少对分页的需求。其他索引方法以不同但大致相似的方式使用填充因子;默认的填充因子在方法之间有所不同。
发布于 2020-08-25 13:58:09
表和索引fillfactor是相互独立的。
表和索引都存储在操作系统上的文件中。这些文件被组织成8KB块。fillfactor确定这些块在多大程度上是由INSERT填充的(对于表而言),或者在右侧(对于索引)的初始创建或扩展。
尽管表和索引上的fillfactors是独立的,但是对于表和索引来说,设置较低值的指示是相似的:如果表收到许多更新。请记住,许多表修改也会导致索引修改。
请注意,只有在没有对更新的列进行索引的情况下,表中较低的fillfactor才会有所帮助。否则,这只是浪费空间。
如果满足上述条件,并且该表接收许多更新,我将在表上设置一个较低的fillfactor。我不会在索引上设置更低的fillfactor,除非我看到一个索引经常被许多更新分割。
https://dba.stackexchange.com/questions/274296
复制相似问题