alt.hn

7/6/2026 at 10:02:08 AM

Vacuum at the Page Level

https://boringsql.com/posts/vacuum-at-the-page-level/

by radimm

7/6/2026 at 1:12:52 PM

The byte by byte view makes the failure mode people run into easier to explain. VACUUM can never remove a tuple whose xmax is newer than the oldest snapshot still open, so one forgotten idle transaction or an abandoned replication slot pins that horizon and every autovacuum pass does a full scan while reclaiming almost nothing. When a table keeps bloating even though autovacuum looks healthy, backend_xmin in pg_stat_activity and xmin in pg_replication_slots are the first two places to check.

by haeseong

7/6/2026 at 1:33:17 PM

Thank you! And you are right. Many people forgot about idle-in-transaction backends.

by radimm