Чем принципиально отличаются VACUUM и VACUUM FULL и что физически происходит с размером таблицы после удаления данных?

В PostgreSQL:

Короткий ответ

Что ответить на собеседовании

В PostgreSQL:

Подробный разбор

Ответ с пояснениями

В PostgreSQL:

  • VACUUM — это команда для очистки "мертвых" строк, которые остались после обновлений и удалений. Она освобождает место для повторного использования, но не уменьшает физический размер таблицы. VACUUM помогает поддерживать производительность и предотвращает рост транзакционных ID (wraparound).
  • VACUUM FULL — более тяжелая операция, которая не только очищает мертвые строки, но и сжимает таблицу, уменьшая её физический размер на диске. Для этого она блокирует таблицу на запись, что может повлиять на доступность.
  • autovacuum — это фоновый процесс, который автоматически запускает VACUUM и ANALYZE по мере необходимости, чтобы поддерживать здоровье базы данных без вмешательства администратора.

Пример:

-- Обычный вакуум
VACUUM my_table;

-- Полный вакуум с сжатием
VACUUM FULL my_table;

В большинстве случаев достаточно autovacuum, но при больших изменениях или проблемах с производительностью может потребоваться ручной VACUUM или VACUUM FULL.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку