VACUUM (Postgres)
Обслуживающая операция PostgreSQL, убирающая «мёртвые строки» (dead tuples), которые MVCC оставляет после UPDATE и DELETE. Без VACUUM таблицы раздуваются, а идентификаторы транзакций могут закончиться. Обычно этим занимается autovacuum.
Зачем он нужен: PostgreSQL никогда не перезаписывает строку — UPDATE создаёт новую версию, а старую помечает мёртвой. VACUUM освобождает место для повторного использования, но не уменьшает файл — это делает VACUUM FULL с эксклюзивной блокировкой. Вторая критическая задача — «заморозка» старых строк, чтобы не допустить переполнения счётчика транзакций (wraparound), способного остановить базу. VACUUM ANALYZE заодно обновляет статистику планировщика. Раздувание (bloat) — частая причина необъяснимой деградации производительности. Следить за ним можно через pg_stat_user_tables. В PostgreSQL 17+ заметно улучшено потребление памяти при VACUUM.