Runbook category

Vacuum & bloat

Open this category when the table grows without the row count growing, when autovacuum is "running" and nothing reclaims, or when wraparound age starts showing up in monitoring. MVCC leaves dead row versions behind; vacuum is what clears them. If the symptom is space, dead tuples, or an age counter, you are in the right place.

The failure surface is wider than one VACUUM command. Autovacuum thresholds that are fine for a cold table and absurd for a hot one. A long transaction that holds back cleanup for everyone. TOAST and index bloat the main heap size never shows. Tables autovacuum keeps skipping. Multixact wraparound next to plain XID wraparound. And the choice between plain VACUUM, VACUUM FULL, and REINDEX CONCURRENTLY when you finally need the space back.

Observability is how you watch vacuum and analyse progress while they run. Locking & concurrency is often the reason vacuum cannot finish, idle-in-transaction and long readers pin the horizon. WAL & replication shows up when hot_standby_feedback or an abandoned slot keeps dead rows alive for a replica. This category is the cleanup path once you know the heap is the problem.