A retention pin holds crossed old-version cells in a heap outline; after release, the same-size outline contains empty reusable cells and surviving tail rows.

Vacuum reclaims versions after the visibility horizon

An update creates a new PostgreSQL row version, and a delete makes an existing version invisible to later snapshots. Neither operation means every older transaction has finished using that version. Ordinary vacuum, including work started by autovacuum, must respect that visibility horizon before reclaiming storage. Scheduling more cleanup cannot override a reader’s legitimate snapshot. ...

June 4, 2027 · 5 min · XB Field Notes