dremio 执行前并不会直接对sql 进行直接查询,而是对现有的执行的脚本进行规划分析
它首先确定所有 反射是否至少有一个表与查询引用的表和视图相同。如果有多个反射,Dremio 会对其进行评估,以确定它们是否满足查询。然后,如果其中 有 反射确实满足查询,Dremio 将生成使用它们的查询计划。
然后,Dremio 将计划的成本 与 直接针对表 执行查询的成本进行比较,并选择成本较低的计划。
最后,Dremio 执行选定的查询计划。通常,使用一个或多个反射的计划 比 对原始数据运行的计划成本更低。
这是dremio 系统优化的一部分,因此不管否此表上是否有反射,或者建立在此表上的其他反射,都会作为查找的一部分
分为三个阶段
1、考虑
在此阶段,计划器将在现有反射中搜索包含可满足查询的列的反射。规划器还确定它是否可以使用星片反射
2. 匹配
计划器为原始用户查询生成替换计划。它搜索“考虑”阶段的反射,并尝试将每个反射匹配到用户查询的替代形式中。然后,每个成功的匹配都会注册为替换计划。在这一点上,尚未考虑计划成本。
3、选择