锅:PRESTO -ACOORDINATOR查询过程-3。上一章解释了AST的重写和验证过程。验证后,将生成一个分析对象。本章将解释以基于分析对象制定逻辑计划;
协调员查询过程 - dispatchmanager#在协调员查询过程中的dispatchmanager中的createqueryinal,提交dispatchquery;
继续查看ResourceGroupManager#提交
继续查看,可以在判断时致电
继续查看
向执行人提交任务以执行等待资源执行;
继续执行,等待工人触发startExecution执行
继续执行,用QuerySubmitter提交查询查询任务;此Querysubbitter是
继续查看
最后在QueryExecution#开始查找查询执行的入口
如以下代码所示,QueryExecution的执行过程如下:
主要过程是:
Presto使用RealationPlanner,QueryPlanner,subquryplanner来构建逻辑计划;主要讨论是通过递归的查询:陈述;当您遇到相应的节点时,请致电相应的访问方法;
,关系 - 类型查询子节点与整体包装,关系规划者将委托给QueryPlanner进行处理;
QueryPlanner负责与查询相关的零件;例如,queryspecification,查询;
subqueryplanner专门处理子标题部分;处理方法是构建用于处理的新关系计划
返回
首先递归处理JOIN的左节点,获取关系平面图,确定Join的右节点是否是一个不管节点,单独处理Unneest节点,无论是侧向节点,外侧节点还是分别处理的(不是深度)。如果右节点不是正确的节点是符合右节点和侧向节点,则递归处理正确的节点,获得关系计划,通过intectype在判断后构建一个粘合节,输出元信息信息信息,然后将其作为raceplan返回。
构建查询和委托查询计划的主体以执行
继续检查QueryPlanner#计划,您可以在此处找到查询的组件,过滤器,聚合,窗口,项目,订单,分类,排序,偏移,偏移,限制,限制,限制,限制,限制,限制,限制,限制,限制,限制, 限制
此时,逻辑计划已经完成,然后输入了逻辑计划的优化;
原始:https://juejin.cn/post/709712719053242911