Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Чтобы получить доступ к этой таблице, регион должен поддерживать прогнозную оптимизацию. Ознакомьтесь с регионами 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 | Операции обновления режима совместимости. |
Примеры запросов
В следующих разделах приведены примеры запросов, которые можно использовать для получения аналитических сведений о системной таблице прогнозной оптимизации. Для работы этих запросов необходимо заменить значения параметров собственными значениями.
В этой статье приведены следующие примеры запросов:
- Сколько оценочных DBU использовано предсказательной оптимизацией за последние 30 дней?
- На каких таблицах прогнозная оптимизация затратила больше всего за последние 30 дней (предполагаемые затраты)?
- На каких таблицах прогнозная оптимизация выполняет больше всего операций?
- Сколько всего байтов уплотнено для данного каталога?
- В каких таблицах было вакуумировано больше всего байтов?
- Какова скорость успешности операций, выполняемых с помощью прогнозной оптимизации?
Сколько предполагаемых баз данных использует прогнозную оптимизацию за последние 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;