Drill中Calcite优化器代码分析

什么是优化器

优化器是对关系节点树做等价变换得到最小代价的执行计划的组件。

优化器执行框架涉及的主要概念如下: 

优化规则(RelOptRule):可对关系节点进行等价转换,包括规则模式定义,模式识别,规则执行,执行关联操作等步骤。

关系集合(RelSet):包含具有不同特性集的关系子集合,一般和关系节点树的根节点对应。

关系子集合(RelSubSet):具有相同特性集合的关系节点组成,特性集和关系子集和一一对应。

特性(RelTrait):目前calcite有排序和转换两种特性,drill包含了分布的特性。特性作用于关系节点。特性是一类优化规则的集合,也是开关。

特性定义(RelTraitDef): calcite中包含ConventionTraitDef和RelCollationTraitDef。ConventionTraitDef内部为特性转换图,边为规则,节点为特性,通过添加规则来构造图,和ConverterRule接口的优化规则配合进行关系节点优化;RelCollationTraitDef主要用于与排序相关的关系节点的优化。

转换器规则(ConverterRule):以特性和关系表达式为操作对象,以特性转换为操作内容,以相同语义关系表达式为操作结果,添加规则过程是构建特性定义ConventionTraitDef中特性转换图的过程。

这些概念串联起来可表述为:优化规则(RelOptRule)把具有一种特性集(RelTraitSet)的关系节点(RelNode)转换到另一种特性集的关系节点, 特性需要有特性定义(RelTraitDef),特性转换需要有转换器(AbstractConverter),同一关系集(RelSet)内关系子集(RelSubSet)之间是等价关系,相同特性集的关系节点组成关系子集。优化器从等价的关系集中找出最优。

Calcite中优化器执行框架

一个优化规则的例子:

JoinAssociateRule规则的模式如下:

private JoinAssociateRule() {
super(
operand(Join.class,
operand(Join.class, any()),
operand(RelSubset.class, any())));
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值