查询性能见解

重要

此功能在 Beta 版中。 工作区管理员可以从 预览 页控制对此功能的访问。 请参阅 Manage Azure Databricks 预览版

本页介绍Azure Databricks查询历史记录中返回的性能见解以及如何对其执行操作。

查询运行时,Azure Databricks可能会返回见解,以识别提高性能的机会。

查找查询的见解和建议

见解显示在 查询历史记录查询配置文件中。 查询详细信息面板显示见解摘要,按他们对总任务工期的估计影响进行排名。 查询配置文件中的 “性能见解 ”选项卡显示每个见解的完整详细信息。

使用 Genie Code 进行优化

当查询具有可操作见解时,请选择“ 优化 ”以打开 Genie Code。 对于需要查询更改的见解,Genie Code 将重写查询并呈现审批的更改。 对于涉及表或计算更改的见解,Genie Code 将建议的操作汇总为纯语言文本。

若要了解有关使用 Genie Code 的详细信息,请参阅 Genie Code

查询优化见解

COVERAGE_FILTER_KEYS_CLUSTERING

该表由表扫描期间筛选器中未使用的一个或多个键 聚集

建议: 在群集键上添加筛选器以减少读取字节数。

COVERAGE_FILTER_KEYS_PARTITIONING

该表由表扫描期间筛选器中未使用的一个或多个键 进行分区

建议: 在分区键上添加筛选器以减少读取字节数。

COVERAGE_PHOTON

Photon 无法加速此操作,因此查询使用标准运行时引擎。

建议: 查看 Photon 限制 并调整查询以使用受支持的执行路径。

EXPLODING_JOIN

联接生成的行数比读取的行要多得多。

建议: 确定所需的结果子集,然后更新联接条件或减少两个关系中的输入行数。

FLOW_FULL_RECOMPUTE

完全重新计算的形式运行。

建议: 重写查询以获取 增量支持 以减少读取字节数。

REDUNDANT_AGGREGATION

聚合操作未更改查询结果。

建议: 删除聚合或应用 主键和外键约束

SELECTIVE_JOIN

联接生成的行明显少于读取的行数。

建议: 确定所需的结果子集,然后在联接前添加筛选器以减少输入行。

WIDE_PROJECTION

查询 投影 表中的所有列。

建议:仅Project减少读取字节所需的列。

数据布局见解

AUTO_LIQUID_CLUSTERING

该表经过手动优化,可以从自动 液体聚类分析中受益。

Recommendations:

  • 将表 从外部转换为 托管 ,以提高性能和自动维护。
  • 为自动维护操作在表上启用 预测优化
  • 在表上启用自动聚类分析以减少读取字节数。

并发写入

并发写入表会导致自动解决或失败 的冲突

建议: 查看 Delta 历史记录 以识别并发写入并调整计划以避免冲突。

COVERAGE_STATS_DELTA

表扫描文件筛选器缺少或不完整的增量数据跳过统计信息,因此查询使用文件内筛选。

每个筛选器的统计信息状态可以是以下项之一:

  • 全: 统计信息适用于所有筛选器。
  • 部分: 统计信息可用于筛选器的子集。
  • 无法: 统计信息不适用于任何筛选器。
  • 闲置: 由于筛选器转换数据类型,因此无法使用统计信息。

建议:收集增量统计信息 以减少读取字节数。

COVERAGE_STATS_OPTIMIZER

基于成本的优化器 统计信息缺失或不完整,因此查询计划使用标准试探法。

建议:收集统计信息 ,使优化器能够生成更好的计划。

DATA_SKEW

数据在计算资源之间分布不均衡。

建议: 查看数据分布,然后使用键加盐或预聚合来平衡工作负荷。

计算和资源见解

DATA_SPILL

在执行查询期间溢出到磁盘的数据,因为数据不适合内存。

建议: 增加仓库 大小 以添加内存。 减少行数、列数或大型列的大小(字符串、数组、映射、结构),以减少内存使用量。

EXCESSIVE_QUEUE_TIME

查询在 仓库 队列中等待。

建议: 增加仓库上的最大 群集数 以减少队列时间。

IO_THROTTLING(输入输出限流)

云存储请求被云提供商限制。

建议: 请与管理员联系,请求云提供商提高存储请求限制。

其他资源

有关性能最佳做法的更广泛概述,请参阅 优化 Databricks、Spark 和 Delta Lake 工作负荷的综合指南