Sobes.tech
Back to questions
Senior
3

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

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

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

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

Пример:

VACUUM my_table;

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