Поделиться через


Команда VACUUM

Область применения: флажок Databricks SQL флажок Databricks Runtime

Удаляет неиспользуемые файлы из каталога таблицы.

Примечание.

Эта команда работает по-разному в зависимости от того, используете вы разностную таблицу или таблицу Apache Spark.

Очистка таблицы Delta

Рекурсивная очистка каталогов, связанных с таблицей Delta. Полные сведения и ограничения см. в разделе "Удаление неиспользуемых файлов данных с помощью вакуума".

VACUUM удаляет все файлы из каталога таблиц, которые не управляются Delta, а также файлы данных, у которых текущее состояние уже неактуально, согласно журналу транзакций для таблицы, а время хранения превышает пороговое значение. VACUUM пропускает все каталоги, имена которых начинаются с символа подчеркивания (_), включая каталоги _delta_log. Секционирование таблицы по столбцу, имя которого начинается с символа подчеркивания, является исключением из этого правила. VACUUM сканирует все допустимые секции, включенные в целевую таблицу Delta. Файлы данных таблицы Delta удаляются в соответствии с тем временем, когда они были логически удалены из журнала транзакций для таблицы Delta. При этом учитывается количество часов хранения, а не метка времени их изменения в системе хранения. По умолчанию срок хранения составляет 7 дней.

В Azure Databricks операция VACUUM не выполняется автоматически для таблиц Delta.

При выполнении VACUUM в таблице Delta теряется возможность перехода по времени к версии старше указанного периода хранения данных.

Предупреждение

Рекомендуется установить интервал хранения не менее 7 дней, так как старые моментальные снимки и незафиксированные файлы могут по-прежнему использоваться параллельными операциями чтения или записи в таблице. Если VACUUM очистит активные файлы, параллельные модули чтения могут завершаться сбоем или, что еще хуже, таблицы могут быть повреждены, если VACUUM удаляет файлы, которые еще не были зафиксированы. Необходимо выбрать интервал, который больше, чем самая длинная параллельная транзакция, и самый длинный период, в течение которого любой поток может отставать от последнего обновления таблицы.

Delta Lake имеет проверку безопасности, чтобы предотвратить запуск опасной команды VACUUM. В Databricks Runtime вы уверены, что в этой таблице нет операций, которые занимают больше указанного интервала хранения, вы можете отключить эту проверку безопасности, задав для свойства spark.databricks.delta.retentionDurationCheck.enabled конфигурации Spark значение false.

VACUUM table_name [RETAIN num HOURS] [DRY RUN]

Внимание

Окно хранения для команды VACUUM определяется свойством delta.deletedFileRetentionDuration таблицы, которое по умолчанию составляет 7 дней. Это означает, что VACUUM файлы данных больше не ссылаются на версию таблицы Delta за последние 7 дней. Если вы хотите хранить данные дольше (например, для поддержки перемещения по времени в течение длительного времени), необходимо задать это свойство таблицы более высоким значением. В следующем примере показано, как задать пороговое значение 30 дней:

ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');

Параметры

Вакуум таблицы, отличной от разностной

Рекурсивно вакуумные каталоги, связанные с таблицей, отличной от Delta, и удалите незафиксированные файлы старше порога хранения. По умолчанию срок хранения составляет 7 дней.

В таблицах, отличных от delta, Azure Databricks автоматически активирует VACUUM операции при записи данных.

Синтаксис

VACUUM table_name [RETAIN num HOURS]

Параметры

  • table_name

    Определяет существующую таблицу по имени или пути.

  • RETAIN num HOURS

    Период хранения.