
Radim Marek 拆解了堆页内部的清理过程。页面剪枝只在单个堆页里回收死元组占的字节并推进 pd_upper 做碎片整理,普通 SELECT 碰到 HOT 链时就会顺手做,VACUUM 的第一阶段也对每个页做一遍。有索引时行指针走 LP_NORMAL 到 LP_DEAD 再到 LP_UNUSED,无索引时一步到位;LP_DEAD 表示空间已回收但 TID 仍被索引引用。HOT 链的头指针会转成 LP_REDIRECT,索引顺着它找到当前版本,从而完全省掉索引更新。
Radim Marek 拆解了堆页内部的清理过程。页面剪枝只在单个堆页里回收死元组占的字节并推进 pd_upper 做碎片整理,普通 SELECT 碰到 HOT 链时就会顺手做,VACUUM 的第一阶段也对每个页做一遍。有索引时行指针走 LP_NORMAL 到 LP_DEAD 再到 LP_UNUSED,无索引时一步到位;LP_DEAD 表示空间已回收但 TID 仍被索引引用。HOT 链的头指针会转成 LP_REDIRECT,索引顺着它找到当前版本,从而完全省掉索引更新。
来源记录
- center.info_item · d75d5e7bc62dec7e · 2026-10-03T04:08:35.169032Z
- pgweb.info_item · d75d5e7bc62dec7e · 2026-10-03T04:08:55.967155Z