3
Обычная очистка
Выполняется командой VACUUM
не конфликтует с обычной активностью в системе
Обрабатывает таблицу и все ее индексы
очищает ненужные версии строк в табличных страницах
(пропуская страницы, уже отмеченные в карте видимости)
очищает индексные записи, ссылающиеся на очищенные версии строк
освобождает указатели
обновляет карту свободного пространства
обновляет карту видимости
Внутристраничная очистка выполняется быстро, но не решает всех
задач. Она работает только в пределах одной табличной страницы и не
затрагивает индексы.
Очистка, выполняемая командой VACUUM, обрабатывает таблицу
полностью, включая все созданные на ней индексы, освобождая место
за счет удаления и ненужных версий строк, и указателей.
Обработка происходит в фоновом режиме, таблица при этом может
использоваться обычным образом и для чтения, и для изменения
(однако одновременное выполнение для таблицы таких команд, как
CREATE INDEX, ALTER TABLE и др. будет невозможно — подробнее
см. модуль «Блокировки»).
Из таблицы читаются только те страницы, в которых происходила
какая-то активность. Для этого используется карта видимости (visibility
map), в которой отмечены страницы, содержащие только достаточно
старые версии строк, которые гарантированно видимы во всех снимках.
Обрабатываются только страницы, не отмеченные в карте, а сама
карта при этом обновляется.
В процессе работы обновляется и карта свободного пространства (free
space map), в которой отражается наличие свободного места
в страницах.