Postgres uses MVCC—UPDATE/DELETE leave dead tuples. VACUUM reclaims space; ANALYZE updates planner statistics. Autovacuum runs both in the background.
Manual maintenance
VACUUM (VERBOSE, ANALYZE) orders;
ANALYZE customers;Practice: Run on a local Postgres instance you own. Avoid changing production cluster settings.
Monitoring bloat
SELECT relname, n_dead_tup, last_autovacuum, last_autoanalyze
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC
LIMIT 10;
Operational guidance
Sudden bulk DELETE/UPDATE spikes dead tuples—watch autovacuum lag. Tune autovacuum on high-churn tables rather than disabling it.
Important interview questions and answers
- Q: VACUUM vs VACUUM FULL?
A: Regular VACUUM reclaims space for reuse; VACUUM FULL locks table and rewrites—last resort. - Q: Why ANALYZE?
A: Stale stats cause bad plans—sequential scans on large tables.
Self-check
- What creates dead tuples?
- What view shows autovacuum timestamps?
Tip: Watch n_dead_tup after bulk DELETE—autovacuum may need tuning.
Interview prep
- Dead tuples?
Left by UPDATE/DELETE under MVCC until VACUUM reclaims.
- ANALYZE purpose?
Updates planner statistics for better plans.