Maintaining Large Tables in PostgreSQL
summary
Diagnoses specific failure modes—autovacuum falling behind causing silent table and index bloat, cache trashing as working set exceeds memory, vacuum/freeze storms from autovacuum_freeze_max_age hitting 200M, runaway WAL and replication lag, HOT update failures and lock amplification—and gives concrete fixes: per-table tuning of autovacuum_vacuum_scale_factor and cost limits, scheduled manual VACUUM/ANALYZE and pg_repack, partitioning or hot/cold splits, fillfactor to preserve HOT updates, and watching metrics like n_tup_hot_upd and pg_stat_checkpointer to verify improvement.
AI-written summary · about
chapters (11)
- 0:00Music & introduction
- 1:58Autovacuum limits and table bloat
- 3:16Cache inefficiency and I/O bottlenecks
- 4:20Vacuum / freeze storms explained
- 6:33WAL volume explosion and replication lag
- 9:18Lock contention, cascading blocks, and statistics staleness
- 11:21HOT update failures and performance optimizations
- 15:31Autovacuum tuning strategies that work
- 20:06Preserving HOT updates and controlling WAL pressure
- 23:09Reducing lock contention and keeping stats fresh
- 26:36Closing
related talks
25mUnderstanding & Managing Postgres Table Bloat
32mOptimizing autovacuum: PostgreSQL’s vacuum cleaner
47mAutoVacuum - Tuning and Monitoring
55mUnderstanding Autovacuum
49mUnderstanding and Fixing Autovacuum
50mTame the growth of your database
33mPostgreSQL Observed—and Explained
48mThe Good, The Bad, and The Bloated: An Autovacuum Story
