PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

66.7. 堆内元组(HOT) #

为了支持高并发,PostgreSQL 使用 多版本并发控制 (MVCC)来存储行。然而, MVCC 对更新查询有一些缺点。 具体来说,更新要求把行的新版本加入表中。 这还可能要求为每个被更新的行增加新的索引条目,而删除行的旧版本及其 索引条目的代价可能很高。

为了帮助降低更新开销, PostgreSQL 提供了一种称为 heap-only tuples(HOT,堆内元组)的优化。这种 优化在以下条件下是可能的:

在这种情况下,堆内元组提供两项优化:

您可以通过减小表的 fillfactor 来提高页面拥有足够空间进行 HOT 更新的可能性。 即使不这样做,HOT 更新仍然会发生,因为新行会自然 地迁移到新页面以及有足够空闲空间容纳新行版本的现有页面。 系统视图 pg_stat_all_tables 可以用于监控 HOT 更新和非 HOT 更新的发生情况。