Sobes.tech
Назад к вопросам
Middle
9

Зачем нужен VACUUM в PostgreSQL? Расскажите о разнице между VACUUM и VACUUM FULL.

Компании, где спрашивали
Winline

Ответ от нейросети

sobes.tech AI

В PostgreSQL команда VACUUM используется для очистки базы данных от «мертвых» строк, которые остаются после операций UPDATE и DELETE. Это необходимо, потому что PostgreSQL использует MVCC (многоверсионность), и старые версии строк не удаляются сразу, чтобы обеспечить согласованность транзакций.

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

VACUUM FULL — более «тяжёлая» операция, которая не только очищает мёртвые строки, но и сжимает таблицу, уменьшая её физический размер на диске. При этом VACUUM FULL блокирует таблицу на запись, что может привести к задержкам в работе.

Пример использования:

VACUUM my_table;          -- обычная очистка
VACUUM FULL my_table;     -- сжатие и уменьшение размера

Обычно рекомендуется регулярно выполнять обычный VACUUM, а VACUUM FULL — только при необходимости освободить место на диске или после массовых удалений.