漫谈分布式系统(22) -- 自适应的优化

本文是《漫谈分布式系统》系列的第 22 篇,探讨了大数据处理中Spark的Adaptive Query Execution (AQE)技术。AQE旨在解决静态配置和统计指标不准确的问题,通过运行时数据统计和动态阈值调整,实现更准确、灵活的查询优化。文章介绍了AQE的三个主要优化:动态合并shuffle分区、动态调整join策略和动态优化倾斜join,并分析了其解决静态配置和估算不准确问题的思路。
摘要由CSDN通过智能技术生成

这是《漫谈分布式系统》系列的第 22 篇,预计会写 30 篇左右。扫描文末二维码,关注公众号,听我娓娓道来。也欢迎转发朋友圈分享给更多人。  

经验的局限性

前面两篇文章,我们介绍了大数据下的 RBO 和 CBO 这两种 SQL 查询性能优化手段。

RBO 忠于既定规则,而 CBO 更关心实际代价,从根本上来说,是两种思路完全不同的优化方式。

虽然各有侧重点,但也有共性。

CBO 虽说基于代价,但也是在几个备选计划中,再去挑选代价最小的。而备选计划也不是随机来的,通常也是基于经验挑选的。

比如常被拿来做例子的 join order,就是在以往经验中,发现 join 的顺序不同,对性能有很大影响,才做成不同的备选计划去接受评估。

从这个角度讲,广义地看,RBO 和 CBO 都是基于经验的

只不过 CBO 给这些经验加入了一些变量,也就是各种对实际数据的统计指标。

然而,上一篇文章我们已经说过,这些统计指标是有缺点的:

  • 统计指标的计算是需要消耗成本的,导致指标可能未及时更新,甚至根本没有指标,

  • 有些指标需要估算,可能不准,比如 filter selectivity 是近似估算,

  • 统计指标可能不能保证及时更新,比如数据刚更新了就被使用,而统计指标还没算完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值