VACUUM (вакуум) – служебная операция PostgreSQL, связанная с многоверсионным управлением конкурентным доступом (MVCC). При обновлении и удалении строк PostgreSQL не перезаписывает их сразу, а создаёт новые версии; старые версии остаются, пока их могут видеть транзакции. Вакуум очищает такие «мёртвые» версии и делает место доступным для повторного использования.
Виды
- VACUUM – освобождает место внутри таблицы для новых записей, работает без блокировки чтения и записи.
- VACUUM FULL – переписывает таблицу целиком и возвращает место ОС, но блокирует таблицу.
- VACUUM ANALYZE – дополнительно обновляет статистику для оптимизатора.
- Autovacuum – фоновый процесс, автоматически запускающий вакуум и анализ.
Зачем важен
- Предотвращает разрастание таблиц и индексов (bloat).
- Защищает от переполнения счётчика транзакций (wraparound), которое может остановить запись.
- Поддерживает актуальную статистику.
Что настраивать
Параметры autovacuum под интенсивность изменений, мониторинг разрастания таблиц и долгих транзакций, которые мешают очистке.