Optimizing autovacuum: PostgreSQL’s vacuum cleaner
summary
Autovacuum wakes by default every minute (autovacuum_naptime = 60s) and triggers when dead tuples exceed a scale factor (example: a 100M‑row table with autovacuum_vacuum_scale_factor = 0.1 only vacuums after ~10M dead tuples). Common fixes are lowering scale factors to 0.02 or 0.002 for very large tables, setting vacuum_cost_delay = 0, increasing autovacuum_max_workers, checking pg_stat_user_tables and pg_stat_progress_vacuum, using pg_prewarm or larger maintenance_work_mem, and monitoring autovacuum_freeze_max_age for wraparound events.
AI-written summary · about
chapters (6)
- 0:00Introduction
- 1:26Why vacuum is essential
- 2:51When vacuuming manually works best
- 3:58Autovacuum overview
- 5:37Autovacuum is not magic
- 28:045 things to remember
related talks
47mAutoVacuum - Tuning and Monitoring
55mUnderstanding Autovacuum
49mUnderstanding and Fixing Autovacuum
27mMaintaining Large Tables in PostgreSQL
33mPostgreSQL Observed—and Explained
48mThe Good, The Bad, and The Bloated: An Autovacuum Story
19mVacuuming Enhancements in PostgreSQL 18: Faster, Smarter, More Predictable
25mUnderstanding & Managing Postgres Table Bloat
