本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Spark 基于成本的优化器
Spark 版本 2.09 及更高版本可以使用基于成本的优化器 (CBO)。国会预算办公室根据各种表统计信息为查询选择最便宜的执行计划。CBO 会尝试在 CPU 利用率和 I/O 方面优化查询的执行,从而尽快返回。但是,在大多数情况下,通常不存在数据统计,尤其是在统计数据收集比数据处理更昂贵的情况下。即使有统计数据,它们也可能已经过时了。以下是使用 CBO 的最佳实践:
-
收集在联接、筛选和分组依据等操作中使用的所有列的统计信息。这有助于优化器做出更好的决策。
ANALYZE TABLE
用于收集统计数据。 -
如果数据变化迅速,请增加统计数据收集的频率。过时的统计数据可能会导致计划未得到优化。
-
从默认 CBO 参数开始,只有在需要时才对其进行调整。积极的优化可以增加运行时间。
-
通过强制执行优化的计划并比较绩效,验证国会预算办公室是否在选择最佳计划。启用优化器日志记录以比较计划。
-
为了获得更好的优化,请将 CBO 与分区、存储桶和数据倾斜提示结合使用。分区可以帮助 CBO 进行扩展。
-
要尽早检测计划回归,请在启用 CBO 后持续监控查询性能。