Autovacuum
Processo em segundo plano do PostgreSQL que roda VACUUM e ANALYZE automaticamente quando uma tabela acumula linhas mortas o bastante. Ativado por padrão. Um autovacuum malconfigurado é uma das armadilhas de desempenho mais comuns do Postgres.
O gatilho: dispara quando as linhas mortas superam autovacuum_vacuum_threshold + scale_factor × tamanho da tabela. O scale_factor padrão (0.2 = 20%) costuma ser lento demais para tabelas grandes → elas incham bastante antes do vacuum agir. Ajuste: reduza o scale_factor por tabela nas tabelas mais quentes, aumente o número de workers, suba o autovacuum_vacuum_cost_limit para ele conseguir acompanhar o ritmo. Sintomas de problema: bloat crescente, avisos de "wraparound", quedas repentinas de desempenho. Antipadrão: desligar o autovacuum "para ganhar performance" → cedo ou tarde termina em desastre. Monitore o last_autovacuum em pg_stat_user_tables.