当页面中已使用的空间比例大于 fillfactor 存储参数(默认值为 100%)时,PostgreSQL 会在页面中执行页剪枝(Page Pruning)操作,将已删除的项从页面中移除,并压缩(注意是 Compact 而不是 Compress)仍然存活的项,将所有存活的项移动至页面的末尾,保证页剪枝后页面的空闲空间仍然是连续的。

需要注意,页剪枝只会更新当前页面,不会更新索引。 因此页剪枝只会更新指向存活项的项指针,指向被删除项的项指针仍然会被保留并被标记为 dead。 此时的索引仍然存有对被删除项的引用,并在发现页指针状态为 dead 后直接忽略该项。