Redrock Postgres 搜索 英文
版本: 15 / 16 / 17 / 18

66.7. 仅堆元组 (HOT) #

为了实现高并发,PostgreSQL 使用 多版本并发控制 (MVCC) 来存储行。然而,MVCC对更新查询有一些不利影响。具体来说,更新需要将行的最新版本添加到表中。这还可能需要为每个更新的行创建新的索引条目,并且删除旧版本的行及其索引条目可能成本很高。

为了帮助减少更新的开销,PostgreSQL 有一个名为仅堆元组 (HOT) 的优化。当满足以下条件时,此优化是可能的:

在这种情况下,仅堆元组提供了两个优化:

您可以通过减小表的 fillfactor 来增加用于HOT更新的页面空间的可能性。如果您不这样做,HOT更新仍将发生,因为新行自然会迁移到新页面,并且现有页面将有足够的可用空间容纳新行版本。系统视图 pg_stat_all_tables 允许监控 HOT 和非 HOT 更新的发生情况。