В PostgreSQL:
Чем принципиально отличаются VACUUM и VACUUM FULL и что физически происходит с размером таблицы после удаления данных?
В PostgreSQL:
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В PostgreSQL:
- VACUUM — это команда для очистки "мертвых" строк, которые остались после обновлений и удалений. Она освобождает место для повторного использования, но не уменьшает физический размер таблицы. VACUUM помогает поддерживать производительность и предотвращает рост транзакционных ID (wraparound).
- VACUUM FULL — более тяжелая операция, которая не только очищает мертвые строки, но и сжимает таблицу, уменьшая её физический размер на диске. Для этого она блокирует таблицу на запись, что может повлиять на доступность.
- autovacuum — это фоновый процесс, который автоматически запускает VACUUM и ANALYZE по мере необходимости, чтобы поддерживать здоровье базы данных без вмешательства администратора.
Пример:
-- Обычный вакуум
VACUUM my_table;
-- Полный вакуум с сжатием
VACUUM FULL my_table;
В большинстве случаев достаточно autovacuum, но при больших изменениях или проблемах с производительностью может потребоваться ручной VACUUM или VACUUM FULL.