Прогнозная оптимизация для управляемых таблиц каталога Unity

Прогнозная оптимизация автоматически выполняет OPTIMIZE, VACUUM и ANALYZE для таблиц под управлением Unity Catalog (Delta Lake и Iceberg) в Azure Databricks, устраняя необходимость ручного обслуживания и затраты времени на отслеживание проблем с производительностью.

Примечание.

Прогнозная оптимизация включена по умолчанию для учетных записей, созданных 11 ноября 2024 г. или после этого. Databricks постепенно включает эту возможность для существующих учетных записей. Ожидается, что этот выпуск завершится к августу 2026 года. Чтобы проверить, включена ли ваша учетная запись, проверьте, включена ли прогнозная оптимизация.

При включенной прогнозной оптимизации Databricks автоматически выполняет следующие действия:

  • Определяет таблицы, которые будут выигрывать от операций обслуживания, и ставит их в очередь для выполнения.
  • Собирает статистику при записи данных в управляемую таблицу.

Это устраняет ненужные операции обслуживания, а также бремя отслеживания и устранения неполадок производительности вручную.

Databricks рекомендует прогнозную оптимизацию для всех управляемых таблиц каталога Unity. Например, автоматическое кластеризование данных использует интеллектуальную оптимизацию распределения данных на основе ваших шаблонов использования данных. См. раздел "Использование кластеризации жидкости" для таблиц.

Какие операции выполняет прогнозная оптимизация?

Прогнозная оптимизация выполняет следующие операции в управляемых таблицах каталога Unity:

Операция Описание
OPTIMIZE Активирует добавочную кластеризацию для включенных таблиц. См. раздел "Использование кластеризации жидкости" для таблиц. Повышает производительность запросов, оптимизируя размеры файлов. См. раздел "Оптимизация макета файла данных".
VACUUM Сокращает затраты на хранилище путем удаления файлов данных, на которые больше не ссылается таблица. Для таблиц, в которых включено чтение Iceberg (UniForm), также выполняется очистка недостижимых файлов метаданных Iceberg. См. Удаление неиспользуемых файлов данных с помощью VACUUM и VACUUMочистка метаданных Iceberg.
ANALYZE Сканирует таблицу и собирает статистику для повышения производительности запросов. См. ...ANALYZE TABLE СТАТИСТИКА ВЫЧИСЛЕНИЙ. Чтобы удалить статистику, собранную прогнозной оптимизацией, см. ANALYZE TABLE … DROP STATISTICS.

Примечание.

OPTIMIZE не запускается ZORDER при прогнозной оптимизации. В таблицах, использующих Z-порядок, прогнозная оптимизация игнорирует Z-упорядоченные файлы.

Если включена автоматическая кластеризация жидкости, прогнозная оптимизация может выбрать новые ключи кластеризации перед кластеризированием данных. См. автоматическая кластеризация жидкости.

Предупреждение

Окно VACUUM хранения определяется свойством delta.deletedFileRetentionDuration таблицы, которое по умолчанию составляет 7 дней. VACUUM Удаляет файлы данных, на которые больше не ссылается версия таблицы Delta в этом окне. Чтобы сохранить данные в течение длительного времени (например, для поддержки расширенного перемещения по времени), задайте это свойство перед включением прогнозной оптимизации:

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

Вычисления и выставление счетов

Прогнозная оптимизация выполняет операции ANALYZE, OPTIMIZE и VACUUM, используя бессерверные вычисления для заданий. С вашей учетной записи взимается плата за вычислительные ресурсы по номеру SKU для бессерверных заданий.

См. цены на управляемые службы Databricks. См. статью "Отслеживание прогнозной оптимизации" с помощью системных таблиц.

Необходимые условия

Для использования прогнозной оптимизации необходимо выполнить следующие требования:

  • Рабочая область Azure Databricks должна находиться в плане "Премиум " в поддерживаемом регионе.
  • Необходимо использовать хранилища SQL или Databricks Runtime 12.2 LTS или более поздней версии.
  • Поддерживаются только управляемые таблицы каталога Unity.

Включение прогнозной оптимизации

Вы можете включить прогнозную оптимизацию для учетной записи, каталога, схемы или таблицы. Все управляемые таблицы каталога Unity наследуют значение учетной записи по умолчанию. Вы можете переопределить учетную запись по умолчанию на уровне каталога, схемы или таблицы.

Для включения или отключения прогнозной оптимизации необходимо иметь следующие привилегии:

Объект каталога Unity Привилегия
Учетная запись Администратор учетной записи
Каталог Владелец каталога или пользователь с MANAGE привилегиями в каталоге
Схема Владелец схемы или пользователь с MANAGE привилегиями в схеме
Таблица Владелец таблицы или пользователь с MANAGE привилегиями в таблице

Включение или отключение прогнозной оптимизации для учетной записи

Администратор учетной записи может включить прогнозную оптимизацию для всех хранилищ метаданных в учетной записи. Каталоги и схемы наследуют этот параметр по умолчанию, но его можно переопределить на любом уровне.

  1. Перейдите в консоль учетных записей.
  2. Перейдите к параметрам, а затем включите функцию.
  3. Выберите нужный параметр (например, включено) рядом с прогнозной оптимизацией.

Примечание.

  • Хранилища метаданных в регионах, которые не поддерживают прогнозную оптимизацию, не включены.
  • Отключение прогнозной оптимизации на уровне учетной записи не отключает ее для каталогов или схем, которые специально включили его.

Включение или отключение прогнозной оптимизации для каталога, схемы или таблицы

Прогнозная оптимизация использует модель наследования. При включении для каталога, схемы в этом каталоге наследуют этот параметр, и таблицы в включенной схеме наследуют его также. Вы можете явно включить или отключить прогнозную оптимизацию для каталога, схемы или таблицы, чтобы переопределить это поведение.

Примечание.

Вы можете отключить прогнозную оптимизацию на уровне каталога, схемы или таблицы, прежде чем включить ее на уровне учетной записи. Если на уровне учетной записи включена прогнозная оптимизация, она остается заблокированной для объектов, которые специально отключили его.

Используйте следующий синтаксис, чтобы включить, отключить или сбросить прогнозную оптимизацию для наследования от родительского объекта.

ALTER CATALOG [catalog_name] { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;
ALTER { SCHEMA | DATABASE } schema_name { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;
ALTER TABLE table_name { ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION;

См. ALTER TABLE.

Проверка включения прогнозной оптимизации

Поле Predictive Optimization является свойством каталога Unity, которое показывает, включена ли прогнозная оптимизация. Если параметр наследуется от родительского объекта, значение поля указывает на это.

Чтобы проверить состояние, используйте следующий синтаксис:

DESCRIBE (CATALOG | SCHEMA | TABLE) EXTENDED name

Проверьте, почему прогнозная оптимизация пропускала таблицу

В Databricks Runtime 18 LTS и более поздних версиях после того, как predictive optimization оценит управляемую таблицу, можно проверить, почему операция была пропущена, двумя способами:

  • Выполните запрос к таблице с помощью DESCRIBE TABLE EXTENDED ... AS JSON.
  • Используйте вкладку История в обозревателе каталогов.

Результаты могут появиться в течение 24 часов.

Используйте DESCRIBE TABLE EXTENDED ... AS JSON

DESCRIBE TABLE EXTENDED ... AS JSON возвращает поле predictive_optimization_evaluations в выходных данных. В этом поле перечислены все типы операций и последний результат оценки.

Чтобы проверить результаты оценки для таблицы, выполните следующее:

DESCRIBE TABLE EXTENDED catalog_name.schema_name.table_name AS JSON

В predictive_optimization_evaluations поле отображается последний результат для каждого типа операции. Отображается только последняя оценка без истории. К типам операций относятся:

  • COMPACTION
  • CLUSTERING
  • AUTO_CLUSTERING_COLUMN_SELECTION
  • VACUUM

Выходные данные оценки не отображают причины пропуска операций ANALYZE .

Используйте вкладку «История» в Catalog Explorer

Причины пропуска можно посмотреть на вкладке История для таблицы в обозревателе каталогов. В столбце "Операция " метка "Авто " указывает на выполнение операции, а метка "Не применена " указывает, что операция пропущена. Метка "Авто " включает прогнозную оптимизацию и другие автоматические операции, такие как автоматическое сжатие потоковой передачи.

Чтобы просмотреть причину пропуска, щелкните строку с меткой Не применено в столбце Операция.

Вкладка журнала обозревателя каталогов, показывающая причины пропуска прогнозной оптимизации

В следующей таблице показано, как типы операций в выводе DESCRIBE TABLE EXTENDED сопоставляются с операциями, отображаемыми в обозревателе каталогов:

DESCRIBE TABLE EXTENDED Тип операции Операция обозревателя каталогов Описание
COMPACTION OPTIMIZE Сжатие файлов для повышения производительности запросов
CLUSTERING OPTIMIZE Инкрементальная кластеризация жидкости
AUTO_CLUSTERING_COLUMN_SELECTION AUTO LIQUID Оценка или эволюция ключей кластеризации жидкости
VACUUM VACUUM Удаление файлов данных, на которые таблица больше не ссылается

Отслеживание прогнозной оптимизации с помощью системных таблиц

Databricks предоставляет системную таблицу system.storage.predictive_optimization_operations_history для наблюдения за операциями прогнозной оптимизации, затратами и воздействием. См. справочник по системной таблице прогнозной оптимизации.

Если системная таблица помечает операции как завершившиеся с ошибкой FAILED: PRIVATE_LINK_SETUP_ERROR, это может означать, что бессерверное частное соединение неправильно настроено. См . статью "Настройка частного подключения к ресурсам Azure".

Ограничения

Прогнозная оптимизация не выполняется в следующих типах таблиц:

  • Таблицы, загруженные в рабочую область для получателей OpenSharing
  • Внешние таблицы