Что делает VACUUM в PostgreSQL и почему появляются мёртвые строки?

В PostgreSQL при обновлении или удалении строк старые версии строк не удаляются сразу, а становятся "мёртвыми" (dead tuples).

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

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

В PostgreSQL при обновлении или удалении строк старые версии строк не удаляются сразу, а становятся "мёртвыми" (dead tuples). Это связано с MVCC (многоверсионностью), которая обеспечивает изоляцию транзакций. Мёртвые строки занимают место и могут замедлять работу базы.

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

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

В PostgreSQL при обновлении или удалении строк старые версии строк не удаляются сразу, а становятся "мёртвыми" (dead tuples). Это связано с MVCC (многоверсионностью), которая обеспечивает изоляцию транзакций. Мёртвые строки занимают место и могут замедлять работу базы.

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

Пример:

VACUUM my_table;

Таким образом, VACUUM поддерживает производительность и предотвращает чрезмерное использование дискового пространства.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее