Что за VACUUM в PostgreSQL и зачем он тебе? 🐹 Если коротко, Postgres… — GouBex — TG.ME

Что за VACUUM в PostgreSQL и зачем он тебе? 🐹

Если коротко, Postgres никогда не удаляет строки сразу (из-за MVCC), а просто помечает их как «мёртвые». Со временем таких мёртвых строк становится много, и таблица начинает тормозить и расти.

Тут на сцену выходит ПЫЛЕСОС (нет, не от dyson | типа GC в Go, кстати):

1. команда VACUUM – убирает мусор (мертвые строки), освобождает место для новых строк, но размер файла таблицы не уменьшает. Не блокирует работу таблицы (идеален для регулярной чистки).

2. команда VACUUM FULL – убирает мусор жёстко, переписывая всю таблицу и освобождая место ОС. Минус – таблица полностью блокируется, пока работает FULL. Использовать редко и осторожно.

3. AUTOVACUUM – работает из коробки, запускается автоматом, но иногда не справляется (например, после массовых DELETE или UPDATE). Тогда ручной VACUUM твой бро.

Когда стоит запускать вручную:
- Удалил/обновил кучу строк
- Надо уменьшить размер базы (VACUUM FULL)
- Перед крупными операциями (дампы, миграции)
- Если autovacuum тупит

Кстати, игнорировать VACUUM опасно – Postgres может дойти до ситуации, когда транзакции тупо перестанут работать (XID wraparound). Поэтому на собесах тоже спрашивают нередко.

А ты уже пылесосил свою базу? Напиши про свой опыт в комm
👇
🐳4❤1👍1🦄11
March 31, 2025 1.9K 5 4