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

В чём разница между VACUUM, VACUUM FULL и autovacuum?

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

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

sobes.tech AI

В PostgreSQL:

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

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

  • autovacuum — это фоновый процесс, который автоматически запускает VACUUM и ANALYZE по мере необходимости, чтобы поддерживать здоровье базы данных без вмешательства администратора.

Пример:

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

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

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