Перейти к основному содержимому

Механизмы очистки объектов

Предлагается три варианта очистки объектов:

  • Команда SQL VACUUM: перебор всех версий хранимых в объекте записей, вычисление срока действия каждой из версий, разметка карты свободного пространства объекта. Не требует исключительной блокировки, не освобождает физическое дисковое пространство и блоки разделяемой памяти, не затрагивает структуру объектов. Пространство, помеченное как свободное во время VACUUM, может быть повторно использовано только под новые версии записей в том же объекте.
  • Фоновый процесс автоочистки: фоновые процессы, которые постепенно, небольшими порциями, параллельно с основной нагрузкой выполняют логику команды VACUUM.
  • Команда SQL VACUUM FULL или CLUSTER: физический перенос всех действующих записей из существующего объекта в новую копию, переключение между копиями, удаление старой копии объекта. Требует исключительной блокировки на все время операции.

Консольная утилита vacuumdb - оболочка для команд VACUUM, она облегчает запуск VACUUM из операционной системы.

Недостаток VACUUM FULL — полная блокировка обрабатываемой таблицы на все время обработки. Эту проблему в Pangolin решают утилита с расширением pg_repack и расширение pg_squeeze.

Результат их действий соответствует VACUUM FULL, но исключительная блокировка не требуется на время перемещения данных — только на самый краткий момент смены идентификаторов дисковых файлов таблиц/индексов. Они значительно облегчают полное пересоздание объектов.