PG和GP中的表和索引的填充因子fillfactor介绍

0    250    2

Tags:

👉 本文共约2768个字,系统预计阅读时间或需11分钟。

简介

在 PostgreSQL 中,fillfactor 是一个用于控制表和索引存储密度的参数。它决定了每页上数据的填充程度,通常以百分比表示。

fillfactor 的设置跟业务模型是息息相关的,如果数据类似日志那样是递增且完全没有更新的,那么表和索引的 fillfactor 设置成 100 无可厚非。

但是大部分业务表总是有更新的,表和索引 fillfactor 就不应该设置成 100,如果是频繁的 update,那么 fillfactor 应该设置得更低。

PG中默认的 fillfactor 如下:

  • 表默认 fillfactor=100
  • 索引默认 fillfactor=90

    B树使用默认填充因子90,但可以选择10到100之间的任何整数值。 如果表是静态的,则fillfactor 100最好最大程度地减小索引的物理大小, 但是对于大量更新的表,较小的fillfactor更好地最小化对页面拆分的需求。 其他索引方法以不同但大致相似的方式使用fillfactor;默认的填充因子因方法而异。

table(默认100)

一个表的填充因子是一个10-100质检的百分数。100(完全填满)是默认值。设置较小的填充因子,insert操作会把表页面只填满到指定的百分比,剩余的空间留给页面上行的更新。这就让update有机会把一行的已更新版本放到在与原始版本相同的页面上,这比把它放在一个不同的页面上效率更高。对于不经常更新的表来说,设置为100是最好的选择,如果更新频繁设置较小的值更合适。这个参数对toast表不生效。

index(fillfactor默认90)

索引的填充因子是一个百分数,它决定索引方法将尝试填充索引页面的充满程度。对于B-tree,在初始的索引构建过程中,叶子页面会被填充至该百分数,B-tree默认的填充因子是90,可以设置为10-100的任何整数值。如果表是静态的,那么填充因子100是最好的,这样索引占用空间最小。对于更新频繁的表,设置较小的值有利于最小化页面分裂。

优缺点

配置 fillfactor 的主要优缺点如下:

优点

  1. 减少页拆分:通过将 fillfactor 设置为较低的值,可以减少由于插入和更新操作导致的页拆分。这在高更新频率的表上尤为重要,能够减少碎片化并提高性能。

  2. 提高写入性能:较低的 fillfactor 值可以减少更新和插入操作时的行溢出,从而减少 I/O 操作,提高写入性能。

  3. 优化查询性能:如果表的行经常被更新,使用较低的 fillfactor 可以减少行溢出,从而优化查询性能,特别是在需要高效扫描或读取的情况下。

缺点

  1. 增加存储空间使用:设置较低的 fillfactor 值会导致每页存储的数据减少,从而增加总的存储需求。对于大数据量的表,这可能会显著增加存储成本。

  2. 可能导致读取效率下降:如果 fillfactor 设置得过低,可能会导致更多的页读操作,因为每页的数据量减少了。这在读取大量数据时可能导致性能下降。

  3. 需要更多的维护工作:表的维护工作(如 VACUUM 和 REINDEX)可能需要更多的时间和资源,因为更低的 fillfactor 值会导致更多的页和索引碎片。

在选择合适的 fillfactor 值时,需要权衡存储需求与性能需求。通常,较低的 fillfactor 值适用于写入和更新操作频繁的表,而较高的 fillfactor 值适用于读取操作较多的表。

相关SQL

如果 reloptions 中包含 fillfactor=N,则表示 fillfactor 被设置为 N,否则使用默认值(通常是 100)。

实验

为了设计一个实验来验证 fillfactor 配置对表膨胀的影响,可以通过以下步骤进行实验。实验的核心是通过设置不同的 fillfactor 来比较表在频繁更新操作后的膨胀情况(表膨胀是指由于更新或删除操作产生的无用空间的增加)。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复