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


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');

Параметры

  • table_name

    Определяет существующую таблицу 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]

Параметры

  • table_name

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

  • RETAIN num HOURS

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