Code Reference

VACUUM & ANALYZE

Postgres · Reference cheat sheet

VACUUM & ANALYZE

Postgres · Reference cheat sheet


📋 Overview

MVCC leaves dead row versions. VACUUM reclaims space for reuse; ANALYZE updates planner statistics. Autovacuum handles most cases — watch bloat and freeze age.

🔧 Core concepts

CommandRole
VACUUMCleanup dead tuples
VACUUM (VERBOSE, ANALYZE)Cleanup + stats
VACUUM FULLRewrite table (exclusive lock)
ANALYZERefresh stats only
AutovacuumBackground workers
MonitorView
Dead tuplespg_stat_user_tables
Autovacuum activitylogs / pg_stat_progress_vacuum
Wraparound riskage(datfrozenxid)

💡 Examples

Targeted maintenance:

VACUUM (ANALYZE) orders;

Check bloat signals:

SELECT relname, n_live_tup, n_dead_tup, last_autovacuum
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC
LIMIT 20;

Aggressive rewrite (maintenance window):

VACUUM FULL orders; -- locks heavily; prefer wisely

⚠️ Pitfalls

  • VACUUM FULL is not routine — it locks and needs disk headroom.
  • Disabling autovacuum “for performance” causes wraparound emergencies.
  • Long transactions delay vacuum — find idle-in-transaction sessions.

On this page