Выбор ответа Senior Транзакции и изоляция обновлено

VACUUM или VACUUM FULL на проде

Вопрос

Таблица после массового удаления занимает 40 ГБ, живых данных на 5 ГБ. Что верно про VACUUM и VACUUM FULL?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: VACUUM переиспользует место, FULL переписывает под ACCESS EXCLUSIVE. Обычный VACUUM не мешает чтению и записи: он освобождает место мёртвых версий для новых строк этой же таблицы и отрезает файл только при пустых страницах в самом конце.

Варианты ответа

  1. Обычный VACUUM вернёт 35 ГБ операционной системе, не блокируя таблицу
  2. VACUUM FULL работает онлайн, но медленнее обычного и грузит диск
  3. VACUUM переиспользует место, FULL переписывает под ACCESS EXCLUSIVEправильный ответ
  4. Оба блокируют запись, но VACUUM FULL ещё и пересобирает статистику

Разбор

Обычный VACUUM не мешает чтению и записи: он освобождает место мёртвых версий для новых строк этой же таблицы и отрезает файл только при пустых страницах в самом конце. VACUUM FULL (как и CLUSTER) записывает живые строки в новый файл и возвращает место ОС, но держит ACCESS EXCLUSIVE: таблица недоступна даже на чтение. Для прода без простоя используют расширение pg_repack или пересоздание через партиции. Статистику обновляет ANALYZE, а не FULL.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме