加载中...

自适应查询执行(Adaptive Query Execution,AQE)指查询在运行过程中依据实际观测到的数据特征(真实行数、大小、倾斜程度)动态调整后续执行计划,而非完全依赖优化时的静态估计。
静态优化依赖基数估计,而估计误差在复杂查询中难以避免,可能导致连接算法、并行度选择失当。AQE 把"估计-执行"改为"执行-观测-再优化"的闭环,在计划的物化边界(如 shuffle 阶段之间)重新决策。
Apache Spark 3.0 正式引入 AQE,包含三项核心能力:依据 shuffle 实际数据量动态合并过小分区、在运行时把 sort-merge join 转换为广播哈希连接、自动检测并拆分倾斜分区以消除长尾任务。该特性自 Spark 3.2 起默认开启。
类似思想在数据库界由来已久:Oracle 12c 的自适应计划可在执行中切换连接方法,SQL Server 的智能查询处理(自适应连接、内存授予反馈)以及学术界的自适应查询处理研究同属此脉络。运行时自适应被视为缓解优化器不确定性的主要工程方向之一。

登录 后参与讨论
暂无讨论,来发表第一条评论吧