VACUUM
Область применения: Databricks SQL Databricks Runtime
Remove неиспользуемые файлы из каталога table.
Примечание.
Эта команда работает по-разному в зависимости от того, работаете ли вы на delta или Apache Spark table.
Vacuum delta table
Рекурсивно директории vacuum, связанные с Delta table. Полные сведения и ограничения см. в Remove неиспользуемых файлов данных с vacuum.
VACUUM
удаляет все файлы из каталога table, которые не управляются Delta, а также файлы данных, которые больше не находятся в последнем состоянии журнала транзакций для table и старше порогового значения хранения.
VACUUM
пропускает все каталоги, имена которых начинаются с символа подчеркивания (_
), включая каталоги _delta_log
. Разделение table на column, начинающееся с подчеркивания, является исключением из этого правила; VACUUM
сканирует все допустимые разделы, включенные в целевую Delta table. Файлы данных Delta table удаляются на основе времени их логического удаления из журнала транзакций Delta с учетом часов хранения, а не на основе меток времени изменения в системе хранения. По умолчанию срок хранения составляет 7 дней.
В Delta tablesAzure Databricks не автоматически активирует операции VACUUM
.
Если вы запускаете VACUUM
на разностном table, вы потеряете возможность перемещения по времени обратно в версию старше указанного периода хранения данных.
Предупреждение
Рекомендуется set интервал хранения не менее 7 дней, так как старые моментальные снимки и незафиксированные файлы по-прежнему могут использоваться параллельными средствами чтения или записи в table. Если VACUUM
очищает активные файлы, параллельные процессы чтения могут завершиться ошибкой или, что еще хуже, tables могут быть повреждены, когда VACUUM
удаляет файлы, которые еще не сохранены. Необходимо выбрать интервал, который превышает самую длительную параллельно выполняющуюся транзакцию и максимальный период отставания любого потока от актуальных данных между update и table.
Delta Lake имеет проверку безопасности, чтобы предотвратить запуск опасной команды VACUUM
. В Databricks Runtime, если вы уверены, что на этом table не выполняются операции, которые занимают больше времени, чем указанный вами интервал хранения, можно отключить эту проверку на безопасность, задав свойству конфигурации 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
в синтаксисе.
Внимание
window хранения для команды VACUUM
определяется свойством delta.deletedFileRetentionDuration
table, которое по умолчанию составляет 7 дней.
Это означает, что VACUUM
удаляет файлы данных, на которые больше не ссылается версия Delta table за последние 7 дней.
Чтобы сохранить данные в течение длительного периода, например для поддержки перемещения по времени в течение длительного времени, set это свойство table более высоким значением.
В следующем примере показано, как задать пороговое значение 30 дней:
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
Parameters
-
Определяет существующий Delta table. Имя не должно включать темпоральную спецификацию или спецификацию параметров.
RETAIN num HOURS
Период хранения.
DRY RUN
Верните до 1000 файлов для удаления в формате list.
FULL
илиLITE
применимо: Databricks Runtime 16.1 и более поздних версий
FULL
выполняет операцию vacuum в полном режиме . При этом файлы данных удаляются за пределами длительности хранения и все файлы в каталоге table, на которые не ссылается table.LITE
выполняет операцию vacuum в режиме Lite. Вместо поиска всех файлов в каталоге table,VACUUM
использует журнал транзакций Delta, чтобы определить и remove файлы, на которые больше не ссылается ни одна версия table в течение срока хранения. ЕслиVACUUM LITE
невозможно завершить, потому что журнал Delta был обрезан, возникает исключение DELTA_CANNOT_VACUUM_LITE.Значение по умолчанию —
FULL
.
Vacuum не разностного table
Рекурсивно оптимизирует каталоги, связанные с неоптимизированными файлами без Delta table и remove, старше предела хранения. По умолчанию срок хранения составляет 7 дней.
В системах tables, не являющихся Delta, Azure Databricks автоматически запускает операции VACUUM
при записи данных.
Синтаксис
VACUUM table_name [RETAIN num HOURS]
Parameters
-
Определяет существующий table по имени или пути.
RETAIN num HOURS
Период хранения.