AdvancedPerformance & Indexes

Tune autovacuum for high-write tables

The query

SQL
-- Check autovacuum settings
SELECT
  relname,
  n_live_tup,
  n_dead_tup,
  autovacuum_vacuum_scale_factor,
  autovacuum_vacuum_threshold
FROM pg_stat_user_tables
LEFT JOIN pg_class ON relname = tablename
WHERE schemaname = 'public';

-- Override autovacuum for high-write table
ALTER TABLE orders SET (
  autovacuum_vacuum_scale_factor = 0.01,  -- vacuum at 1% dead tuples (default 20%)
  autovacuum_vacuum_threshold = 100,       -- vacuum if > 100 dead tuples
  autovacuum_analyze_scale_factor = 0.005  -- analyze more frequently
);

-- Manual vacuum
VACUUM (ANALYZE, VERBOSE) orders;
Tested against PostgreSQL 16

Note

Default autovacuum fires at 20% dead tuples. High-write tables need lower thresholds to prevent bloat.

Tables referenced