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


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

Внимание

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

Примечание.

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

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

пути к таблице: эта системная таблица находится в system.storage.predictive_optimization_operations_history.

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

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

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

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

Имя столбца Тип данных Описание Пример
account_id строка Идентификатор учетной записи. 11e22ba4-87b9-4cc2-9770-d10b894b7118
workspace_id строка Идентификатор рабочей области, в которой прогнозная оптимизация выполнила операцию. 1234567890123456
start_time временная метка Время начала операции. Сведения о часовом поясе записываются в конце значения с +00:00, представляющей UTC. 2023-01-09 10:00:00.000+00:00
end_time временная метка Время завершения операции. Сведения о часовом поясе записываются в конце значения с +00:00, представляющей UTC. 2023-01-09 11:00:00.000+00:00
metastore_name строка Имя хранилища метаданных, к которому принадлежит оптимизированная таблица. metastore
metastore_id строка Идентификатор хранилища метаданных, к которому принадлежит оптимизированная таблица. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
catalog_name строка Имя каталога, к которому принадлежит оптимизированная таблица. catalog
schema_name строка Имя схемы, к которой принадлежит оптимизированная таблица. schema
table_id строка Идентификатор оптимизированной таблицы. 138ebb4b-3757-41bb-9e18-52b38d3d2836
table_name строка Имя оптимизированной таблицы. table1
operation_type строка Выполнена операция оптимизации. Должно быть одним из следующих значений: COMPACTION, VACUUM, ANALYZE, CLUSTERING, , AUTO_CLUSTERING_COLUMN_SELECTION, DATA_SKIPPING_COLUMN_SELECTIONили COMPATIBILITY_MODE_REFRESH. COMPACTION
operation_id строка Идентификатор операции оптимизации. 4dad1136-6a8f-418f-8234-6855cfaff18f
operation_status строка Состояние операции оптимизации. Должно быть одним из следующих значений: SUCCESSFUL или FAILED: INTERNAL_ERROR. SUCCESSFUL
operation_metrics map[string, string] Дополнительные сведения о конкретной оптимизации, которая была выполнена. См. метрики операций. {"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

Метрики операций

Метрики, записанные в столбце operation_metrics, зависят от типа операции:

Имя операции Описание операции Метрики операций Описание
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 Количество байт мусора, собранных этой операцией.
ANALYZE Активирует добавочное обновление статистики для повышения производительности запросов. См. ANALYZE TABLE. amount_of_scanned_bytes Количество байтов, отсканированных этой операцией.
number_of_scanned_files Количество файлов, отсканированных этой операцией.
staleness_percentage_reduced Уменьшение процента устаревания после этой операции. Эта статистика может варьироваться от 0 до 100 на основе частоты ANALYZE выполнения.
CLUSTERING Активирует добавочную кластеризацию для включенных таблиц. См. раздел "Использование кластеризации жидкости" для таблиц. number_of_removed_files Количество файлов, удаленных этой операцией.
number_of_clustered_files Количество новых файлов, добавленных этой операцией.
amount_of_data_removed_bytes Количество байтов, удаленных этой операцией.
amount_of_clustered_data_bytes Количество байтов, добавленных этой операцией.
AUTO_CLUSTERING_COLUMN_SELECTION Определяет, следует ли развивать кластеризацию столбцов. См. автоматическая кластеризация жидкости. old_clustering_columns Предыдущий макет данных, который может быть старыми ключами кластеризации или "Нет", если данные не разделены на разделы.
new_clustering_columns Новые столбцы кластеризации, примененные этой операцией.
has_column_selection_changed Изменила ли эта операция колонки кластеризации.
additional_reason Причины изменения или отсутствия изменений в столбцах кластеризации.
DATA_SKIPPING_COLUMN_SELECTION Обнаруживает столбцы с отсутствующими данными, игнорируя статистику рабочей нагрузки, и заполняет их ретроспективно. См. пропуск данных. amount_of_scanned_bytes Количество байтов, отсканированных этой операцией.
number_of_scanned_files Количество файлов, отсканированных этой операцией.
added_data_skipping_columns Недавно добавленные столбцы пропуска данных, примененные этой операцией.
removed_data_skipping_columns Столбцы пропуска данных, удаленные в результате этой операции.
old_data_skipping_columns Предыдущий исчерпывающий список пропущенных столбцов данных.
new_data_skipping_columns Текущий исчерпывающий список пропущенных столбцов данных.
COMPATIBILITY_MODE_REFRESH Определяет, устарел ли режим совместимости и обновляет таблицу. См. режим совместимости. N/A Операции обновления режима совместимости.

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

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

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

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

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

Чтобы найти то же значение для определенного конвейера ETL, сначала можно найти таблицы в этом конвейере, а затем выполнить поиск баз данных:

-- Find all full table names for the pipeline:
WITH pipeline_mapping AS (
  SELECT DISTINCT target_table_full_name AS target_table_name
  FROM system.access.table_lineage
  WHERE entity_type = 'PIPELINE' AND entity_id = :pipeline_id
)
-- Select all operations for any table in that pipeline:
SELECT SUM(usage_quantity)
  FROM system.storage.predictive_optimization_operations_history
  WHERE
    CONCAT_WS('.', catalog_name, schema_name, table_name)
      IN ( SELECT target_table_name FROM pipeline_mapping)
    AND 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;