重要
此功能在 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 工作负荷的综合指南。