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


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.deletedFileRetentionDurationtable, которое по умолчанию составляет 7 дней. Это означает, что VACUUM удаляет файлы данных, на которые больше не ссылается версия Delta table за последние 7 дней. Чтобы сохранить данные в течение длительного периода, например для поддержки перемещения по времени в течение длительного времени, set это свойство table более высоким значением. В следующем примере показано, как задать пороговое значение 30 дней:

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

Parameters

  • table_name

    Определяет существующий 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_name

    Определяет существующий table по имени или пути.

  • RETAIN num HOURS

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