Команда 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. Имя не должно включать темпоральную спецификацию или спецификацию параметров.
RETAIN num HOURS
Период хранения.
DRY RUN
Возвращает список удаляемых файлов (до 1000).
Вакуум таблицы, отличной от разностной
Рекурсивно вакуумные каталоги, связанные с таблицей, отличной от Delta, и удалите незафиксированные файлы старше порога хранения. По умолчанию срок хранения составляет 7 дней.
В таблицах, отличных от delta, Azure Databricks автоматически активирует VACUUM
операции при записи данных.
Синтаксис
VACUUM table_name [RETAIN num HOURS]
Параметры
-
Определяет существующую таблицу по имени или пути.
RETAIN num HOURS
Период хранения.