预测优化系统表参考

重要

此系统表为公共预览版

注意

若要访问此表,区域必须支持预测优化。 请参阅 Azure Databricks 区域

本文概述预测优化操作历史记录表架构并提供示例查询。 预测优化可优化数据布局,实现最佳性能和成本效益。 系统表跟踪此功能的操作历史记录。 有关预测优化的信息,请参阅 Unity Catalog 托管表的预测性优化

表路径:此系统表位于 system.storage.predictive_optimization_operations_history.

交付注意事项

  • 预测优化系统表在两小时内更新。 但是,计费信息最多可能需要 24 小时才能填充数据。
  • 预测优化可能在同一群集上运行多个操作。 如果是这样,则表示每个操作归因于每个操作的 DBU 共享是近似的。 这就是为什么 usage_unit 设置为 ESTIMATED_DBU 的原因。 不过,在群集上使用的 DBU 总数是准确的。

预测优化表架构

预测优化操作历史记录系统表使用以下架构:

列名称 数据类型 说明 示例
account_id 字符串 帐户 ID。 11e22ba4-87b9-4cc2-9770-d10b894b7118
workspace_id 字符串 预测优化在其中运行操作的工作区的 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 字符串 优化表所属的元存储的 ID。 5a31ba44-bbf4-4174-bf33-e1fa078e6765
catalog_name 字符串 优化表所属的目录的名称。 catalog
schema_name 字符串 优化表所属的架构的名称。 schema
table_id 字符串 优化表的 ID。 138ebb4b-3757-41bb-9e18-52b38d3d2836
table_name 字符串 优化表的名称。 table1
operation_type 字符串 已执行的优化操作。 必须是以下数值之一:COMPACTIONVACUUMDATA_SKIPPING_COLUMN_SELECTIONANALYZEAUTO_CLUSTERING_COLUMN_SELECTIONCOMPATIBILITY_MODE_REFRESHCLUSTERINGDELETE或 。PURGE COMPACTION
operation_id 字符串 优化操作的 ID。 4dad1136-6a8f-418f-8234-6855cfaff18f
operation_status 字符串 优化操作的状态。 必须是下列值之一:SUCCESSFULFAILED: INTERNAL_ERROR、或FAILED: AUTO_TTL_COLUMN_DOES_NOT_EXIST_ERRORFAILED: PRIVATE_LINK_SETUP_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 通过删除表不再引用的数据文件来降低存储成本。 请参阅使用 vacuum 删除未使用的数据文件 number_of_deleted_files 垃圾回收的文件数量。
amount_of_data_deleted_bytes 垃圾回收的字节数。
ANALYZE 触发统计信息增量更新以提高查询性能。 请参阅 ANALYZE TABLE ...计算统计信息 amount_of_scanned_bytes 扫描的字节数。
number_of_scanned_files 扫描的文件数量。
staleness_percentage_reduced 陈代谢率的降低。 该统计值根据运行频率 ANALYZE 从0到100不等。
CLUSTERING 为已启用的表触发增量聚类分析。 请参阅对表使用 liquid 聚类分析 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 兼容模式刷新操作。
DELETE 移除已经过自动生命时间到期的行。 请参阅 通过自动生存时间自动删除行 number_of_deleted_rows 删除的行数。 此时 0 没有任何行符合删除资格。
amount_of_data_deleted_bytes 删除的字节数。
PURGE 重写数据文件,物理移除已用删除矢量删除的行。 在启用删除向量的表上运行。VACUUM 请参阅 通过自动生存时间自动删除行 number_of_purged_rows 清除的行数。 这时 0 没有任何行可以被清除。 请参阅 通过自动生存时间自动删除行

示例查询

以下部分包括可用于深入了解预测优化系统表的示例查询。 若要使这些查询正常工作,需要将参数值替换为自己的值。

本文包括以下示例查询:

估计过去 30 天内有多少 DBU 使用了预测优化?

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

若要查找特定 ETL 管道的相同值,可以先在该管道中找到表,然后搜索 DBU:

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