KSTORE优化器理论剖析

#KSTORE单节点优化器

1 优化器输入

Query结构

2 优化器输出

Plan树形结构

3 优化器主要接口

4 主要工作流程

4.1. 规则优化

4.1.1. 物化视图

4.1.2. 消除子链接中没有意义的distinct,orderby,groupby

4.1.3. 提升含有聚集函数的子查询

4.1.4. 目标列/groupby常量性/空值改写规则

4.1.5. distinct消除规则

4.1.6. 消除排序规则

4.1.7. 含group字查询提升为视图

4.1.8. 提升子查询

4.1.9. 提升视图

4.1.10. 消除聚集函数

4.1.11. kscount

4.1.12. distinct agg改写

4.2. 目标列预处理

4.2.1. 计算目标列中的常量表达式 op/distinct/or/and/not等

4.2.2. 将SubLink转换成SubPlan

一般为lefthand oper subselect的形式,例如where a in (select a from test)

之后对subselect进行subquery_planner,将其生成为SubPlan

4.3. returning预处理

4.4. limit count预处理

4.5. limit offset预处理

4.6. top percent预处理

4.7. 条件(qual)预处理(where条件和连接条件)

4.7.1. 预处理qual中的表达式,将having/where中的条件规范化,cnf/dnf

4.8. having/into等子句进行预处理表达式

4.9. grouping_planner

Table of Contents