TDDL的optimizer层主要完成三部分的工作:
- 将parser分析得到的statement转化为可以优化的AST语法树
- 对AST语法树做Cost Based优化
- 根据优化后的AST语法树生成查询计划
本篇文档主要介绍第3点中AST语法树相关的结构。
执行计划相关的核心接口是IDataNodeExecutor,它继承了CanVisit接口,能够被PlanVisitor访问。IDataNodeExecutor相关结构是联通optimizer层和exectuor层的关键。
TDDL的执行器层executor将会根据IDataNodeExecutor重新生成在各个mysql实例上运行的SQL,并merge最终结果。
IDataNodeExecutor执行计划相关类结构如下: