SQL 查询优化器浅析笔记(三) | 青训营笔记
这是我参与「第四届青训营 -大数据场」笔记创作活动的的第2天
三、社区开源实践
1. 概览
2. Apache Calcite 概览
- One size fits all:统一的SQL查询引擎
- 模块化,插件化,稳定可靠
- 支持异构数据模型
- 关系型
- 半结构化
- 流式
- 地理空间数据
- 内置 RBO 和 CBO
- HepPlanner
- 优化规则(Rule)
- Pattern:匹配表达式子树
- 等价变换:得到新的表达式
- 内置有 100+优化规则
- 四种匹配规则
- ARBITRARY/DEPTH_FIRST:深度优先
- TOP DOWN:拓扑顺序
- BOTTOM_UP:与TOP_DOWN 相反
- 遍历所有的rule,直到没有rule可以被触发
- 优化速度快,实现简单,但是不保证最优
- 优化规则(Rule)
3. Calcite CBO
- VolcanoPlanner
- 基于 Volcano/Cascade 框架
- 成本最优假设
- Memo:存储候选执行计划
- Group:等价计划集合
- Top-down 动态规划搜索
-
VolcanoPlanner
-
应用 Rule 搜索候选计划
-
Memo
-
本质:AND/OR graph
-
共享子树减少内存开销
-
-
- VolcanoPlanner
- Group winner:目前的最优计划
-
VolcanoPlanner
- 剪枝(Branch-and-bound pruning) :减少搜索空间
-
可行的Aggregate
- 总的cost = 500
- 自己的cost = 150
- 孩子节点cost上限 = 350
- VolcanoPlanner
- Top-down 遍历:选择 winner 构建最优执行计划
4. 小结
- 主流的查询优化器都包含 RBO 和 CBO
- Apache Calcite 是大数据领域很流行的查询优化器
- Apache Calcite RBO定义了许多优化规则,使用 pattern 匹配子树,执行等价变换Apache Calcite CBO基于 Volcano/Cascade 框架
- Volcano/Cascade 的精髓:Memo、动态规划、剪枝
四、前沿趋势
1. 概览
2. DATA + AI
-
AI4DB
-
自配置:
-
①智能调参 (OtterTune , QTune)
-
②负载预测/调度
-
-
自诊断和自愈合:错误恢复和迁移
-
自优化:
-
①统计信息估计( Learned cardinalities )
-
②代价估计
-
③学习型优化器(BM )
-
④索引/视图推荐
-
-
-
DB4AI
-
内嵌人工智能算法(MLSQL , SQLFlow)
-
内嵌机器学习框架(SparkML , Alink , dl-on-flink )
-
3.小结
-
大数据创业如火如荼,SQL查询优化器仍然是必不可少的一个重要组件
-
引擎架构的进化、云原生、湖仓一体等对 SQL 查询优化器有新的要求和挑战
-
Al 加持,学习型查询优化器在不断进化