Справочник по системной таблице прогнозной оптимизации

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Примечание.

Чтобы получить доступ к этой таблице, необходимо включить схему storage (см. раздел "Включить системные схемы таблиц") и регион должен поддерживать прогнозную оптимизацию (см. регионы Azure Databricks).

В этой статье описана схема таблицы журнала операций прогнозной оптимизации и приведены примеры запросов. Прогнозная оптимизация оптимизирует макет данных для повышения производительности и эффективности затрат. Системная таблица отслеживает журнал операций этой функции. Сведения об прогнозной оптимизации см. в разделе "Прогнозная оптимизация" для Delta Lake.

Эта системная таблица находится по адресу system.storage.predictive_optimization_operations_history.

Рекомендации по доставке

  • Данные могут занять до 24 часов.
  • Прогнозная оптимизация может выполнять несколько операций в одном кластере. Если это так, доля баз данных, которые относятся к каждой из нескольких операций, приблизилась. usage_unit Именно поэтому для параметра задано значение ESTIMATED_DBU. Тем не менее общее количество баз данных, потраченных на кластер, будет точным.

Схема таблицы прогнозной оптимизации

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

Имя столбца Тип данных Description Пример
account_id строка Идентификатор учетной записи. 11e22ba4-87b9-4cc2-9770-d10b894b7118
workspace_id строка Идентификатор рабочей области, в которой прогнозная оптимизация выполнила операцию. 1234567890123456
start_time TIMESTAMP Время начала операции. 2023-01-09 10:00:00.000
end_time TIMESTAMP Время завершения операции. 2023-01-09 11:00:00.000
metastore_name строка Имя хранилища метаданных, к которому принадлежит оптимизированная таблица. metastore
catalog_name строка Имя каталога, к которому принадлежит оптимизированная таблица. catalog
schema_name строка Имя схемы, к которой принадлежит оптимизированная таблица. schema
table_id строка Идентификатор оптимизированной таблицы. 138ebb4b-3757-41bb-9e18-52b38d3d2836
table_name строка Имя оптимизированной таблицы. table1
operation_type строка Операция оптимизации, которая была выполнена. Значение будет или COMPACTIONVACUUM. COMPACTION
operation_id строка Идентификатор операции оптимизации. 4dad1136-6a8f-418f-8234-6855cfaff18f
operation_status строка Состояние операции оптимизации. Значение будет или SUCCESSFULFAILED: INTERNAL_ERROR. SUCCESSFUL
operation_metrics map[string, string] Дополнительные сведения о конкретной оптимизации, которая была выполнена. Для операций COMPACTION: (number_of_compacted_files, amount_of_data_compacted_bytes, number_of_output_files, amount_of_output_data_bytes) для операций VACUUM: (number_of_deleted_files, amount_of_data_deleted_bytes) {"number_of_output_files":"100","number_of_compacted_files":"1000","amount_of_output_data_bytes":"4000","amount_of_data_compacted_bytes":"10000"}
usage_unit строка Единица использования этой операции. Может быть только одно значение: ESTIMATED_DBU ESTIMATED_DBU
usage_quantity десятичное Объем единицы использования, используемой этой операцией. 2.12

Примеры запросов

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

В этой статье приведены следующие примеры запросов:

Сколько баз данных используется прогнозной оптимизации за последние 30 дней?

SELECT SUM(usage_quantity)
FROM system.storage.predictive_optimization_operations_history
WHERE
     usage_unit = "ESTIMATED_DBU"
     AND  timestampdiff(day, start_time, Now()) < 30

В каких таблицах прогнозная оптимизация провела большую часть за последние 30 дней?

SELECT
     metastore_name,
     catalog_name,
     schema_name,
     table_name,
     SUM(usage_quantity) as totalDbus
FROM system.storage.predictive_optimization_operations_history
WHERE
    usage_unit = "ESTIMATED_DBU"
    AND timestampdiff(day, start_time, Now()) < 30
GROUP BY ALL
ORDER BY totalDbus DESC

В каких таблицах выполняется прогнозная оптимизация, выполняющая большинство операций?

SELECT
     metastore_name,
     catalog_name,
     schema_name,
     table_name,
     operation_type,
     COUNT(DISTINCT operation_id) as operations
FROM system.storage.predictive_optimization_operations_history
GROUP BY ALL
ORDER BY operations DESC

Для данного каталога сколько байтов было сокращено?

SELECT
     schema_name,
     table_name,
     SUM(operation_metrics["amount_of_data_compacted_bytes"]) as bytesCompacted
FROM system.storage.predictive_optimization_operations_history
WHERE
    metastore_name = {{metastore_name}}
    AND catalog_name = {{catalog_name}}
    AND operation_type = "COMPACTION"
GROUP BY ALL
ORDER BY bytesCompacted DESC

Какие таблицы были наиболее байтов вакуумными?

SELECT
     metastore_name,
     catalog_name,
     schema_name,
     table_name,
     SUM(operation_metrics["amount_of_data_deleted_bytes"]) as bytesVacuumed
FROM system.storage.predictive_optimization_operations_history
WHERE operation_type = "VACUUM"
GROUP BY ALL
ORDER BY bytesVacuumed DESC

Какова скорость успешности операций, выполняемых с помощью прогнозных оптимизаций?

WITH operation_counts AS (
     SELECT
           COUNT(DISTINCT (CASE WHEN operation_status = "SUCCESSFUL" THEN operation_id END)) as successes,
           COUNT(DISTINCT operation_id) as total_operations
    FROM system.storage.predictive_optimization_operations_history
 )
SELECT successes / total_operations as success_rate
FROM operation_counts