SQL 查询优化器浅析笔记(三) | 青训营笔记

233 阅读2分钟

SQL 查询优化器浅析笔记(三) | 青训营笔记

这是我参与「第四届青训营 -大数据场」笔记创作活动的的第2天

三、社区开源实践

1. 概览

image.png

2. Apache Calcite 概览

  • One size fits all:统一的SQL查询引擎
  • 模块化,插件化,稳定可靠
  • 支持异构数据模型
    • 关系型
    • 半结构化
    • 流式
    • 地理空间数据
  • 内置 RBO 和 CBO

image.png

  • HepPlanner
    • 优化规则(Rule)
      • Pattern:匹配表达式子树
      • 等价变换:得到新的表达式
    • 内置有 100+优化规则
    • 四种匹配规则
      • ARBITRARY/DEPTH_FIRST:深度优先
      • TOP DOWN:拓扑顺序
      • BOTTOM_UP:与TOP_DOWN 相反
    • 遍历所有的rule,直到没有rule可以被触发
    • 优化速度快,实现简单,但是不保证最优

image.png

3. Calcite CBO

  • VolcanoPlanner
    • 基于 Volcano/Cascade 框架
    • 成本最优假设
    • Memo:存储候选执行计划
      • Group:等价计划集合
    • Top-down 动态规划搜索

image.png

  • VolcanoPlanner

    • 应用 Rule 搜索候选计划

    • Memo

      • 本质:AND/OR graph

      • 共享子树减少内存开销

image.png

  • VolcanoPlanner
    • Group winner:目前的最优计划

image.png

  • VolcanoPlanner

    • 剪枝(Branch-and-bound pruning) :减少搜索空间
  • 可行的Aggregate

    • 总的cost = 500
    • 自己的cost = 150
    • 孩子节点cost上限 = 350

image.png

  • VolcanoPlanner
    • Top-down 遍历:选择 winner 构建最优执行计划

image.png

4. 小结

  • 主流的查询优化器都包含 RBO 和 CBO
  • Apache Calcite 是大数据领域很流行的查询优化器
  • Apache Calcite RBO定义了许多优化规则,使用 pattern 匹配子树,执行等价变换Apache Calcite CBO基于 Volcano/Cascade 框架
  • Volcano/Cascade 的精髓:Memo、动态规划、剪枝

四、前沿趋势

1. 概览

image.png

2. DATA + AI

  • AI4DB

    • 自配置:

      • ①智能调参 (OtterTune , QTune)

      • ②负载预测/调度

    • 自诊断和自愈合:错误恢复和迁移

    • 自优化:

      • ①统计信息估计( Learned cardinalities )

      • ②代价估计

      • ③学习型优化器(BM )

      • ④索引/视图推荐

  • DB4AI

    • 内嵌人工智能算法(MLSQL , SQLFlow)

    • 内嵌机器学习框架(SparkML , Alink , dl-on-flink )

3.小结

  • 大数据创业如火如荼,SQL查询优化器仍然是必不可少的一个重要组件

  • 引擎架构的进化、云原生、湖仓一体等对 SQL 查询优化器有新的要求和挑战

  • Al 加持,学习型查询优化器在不断进化

课程总结

image.png