VACUUM
Область применения: Databricks SQL
Databricks Runtime
Удалите неиспользуемые файлы из каталога таблицы.
Примечание.
Эта команда работает по-разному в зависимости от того, работаете ли вы в таблице Delta или Apache Spark.
Очистите таблицу Delta
Рекурсивно выполняйте очистку каталогов, связанных с таблицей Delta. Полные сведения и ограничения см. в разделе Удаление неиспользуемых файлов данных с помощью команды vacuum.
VACUUM
удаляет все файлы из каталога таблиц, которые не управляются Delta, а также файлы данных, которые больше не находятся в последнем состоянии журнала транзакций для таблицы и старше порога хранения.
VACUUM
пропускает все каталоги, имена которых начинаются с символа подчеркивания (_
), включая каталоги _delta_log
. Секционирование таблицы по столбцу, который начинается с подчеркивания, является исключением из этого правила; VACUUM
сканирует все допустимые разделы, включенные в целевую таблицу Delta. Файлы данных таблицы Delta удаляются в соответствии со временем, когда они были логически удалены из журнала транзакций Delta, плюс время хранения, а не их метками времени изменения в системе хранения. По умолчанию срок хранения составляет 7 дней.
В таблицах Delta Azure Databricks не автоматически запускает операции VACUUM
.
Если вы запускаете VACUUM
в таблице Delta, вы потеряете возможность временного перемещения обратно в версию старше указанного периода хранения данных.
Предупреждение
Рекомендуется установить интервал хранения не менее 7 дней, так как старые моментальные снимки и незафиксированные файлы по-прежнему могут использоваться параллельными средствами чтения или записи в таблицу. Если VACUUM
очищает активные файлы, одновременные операции чтения могут завершиться с ошибкой, или, что еще хуже, таблицы могут быть повреждены, если VACUUM
удаляет файлы, которые еще не были зафиксированы. Необходимо выбрать интервал, который больше, чем самая длинная параллельная транзакция, и самый длинный период, который любой поток может отстать от последнего обновления в таблице.
Delta Lake имеет проверку безопасности, чтобы предотвратить запуск опасной команды VACUUM
. В Databricks Runtime вы уверены, что в этой таблице нет операций, которые занимают больше указанного интервала хранения, вы можете отключить эту проверку безопасности, задав свойство конфигурации Spark spark.databricks.delta.retentionDurationCheck.enabled
на false
.
VACUUM table_name { { FULL | LITE } | RETAIN num HOURS | DRY RUN } [...]
В Databricks Runtime 16.0 и более ранних 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 файлов, которые нужно удалить.
FULL
илиLITE
применимо:
Databricks SQL
Databricks Runtime 16.1 и более поздних версий
FULL
выполняет вакуумную операцию в полном режиме . Это удаляет файлы данных по истечении срока хранения и все файлы в каталоге таблицы, на которые не ссылается таблица.LITE
выполняет операцию вакуума в режиме Lite. Вместо поиска всех файлов в каталоге таблицVACUUM
использует журнал транзакций Delta для идентификации и удаления файлов, на которые больше не ссылаются версии таблиц в течение срока хранения. ЕслиVACUUM LITE
невозможно завершить, потому что журнал Delta был обрезан, возникает исключение DELTA_CANNOT_VACUUM_LITE.Значение по умолчанию —
FULL
.
Вакуум таблицы, не являющейся Delta
Рекурсивно очищает каталоги, связанные с таблицей, не принадлежащей Delta, и удаляет незафиксированные файлы, старше порога времени хранения. По умолчанию срок хранения составляет 7 дней.
В таблицах, отличных от Delta, Azure Databricks автоматически активирует VACUUM
операции при записи данных.
Синтаксис
VACUUM table_name [RETAIN num HOURS]
Параметры
-
Определяет существующую таблицу по имени или пути.
RETAIN num HOURS
Период хранения.