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

131 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第1天。

一,本堂课所讲内容

  1. 大数据体系和SQL
  2. 常见的查询优化器
  3. 社区开源实践
  4. 前沿趋势

二,我学到的知识点

  • 大数据体系

IMG_0022.jpg

  • SQL的处理流程
graph TD
Parser --> Analyzer --> Optimizer --> Executor
  • 查询优化器分类 TOP-down Optimizer
  1. Bottom—up Optimizer
  2. Rule-based Optimizer(RBO)
  3. Cost-based Optimizer(CBO)

三,实践练习例子

  1. Apaache Calcite概括

One size fits all:统一的SQL查询引擎

模块化,插件化,稳定可靠

支持异构数据模型

  • 关系型
  • 半结构化
  • 流式
  • 地理空间数据

内置RBO和CBO

  1. Calcite RBO

HepPlanner

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

VolcanoPlanner

  • 基于Volcano/Cascade框架
  • 成本最优假设
  • Memo:存储候选执行计划
  • Group:等价计划集合
  • TOP-down动态规划搜索
  • 应用rule搜索候选计划
  • Memo
  • Group winner:目前的最优计划
  • 剪枝:减少搜索空间
  • Top-down遍历:选择winner构建最优执行计划

四,课后总结

  • One SQL rules big data
  • 查询优化器是数据库的大脑,在大数据场景下对查询性能至关重要
  • 查询优化器需要感知数据分布,充分利用数据的亲和性
  • 查询优化器按照最小化网络数据传输的目标把逻辑计划拆分成多个物理计划片段
  • CBO使用代价模型和统计信息估算执行计划的代价
  • CBO使用贪心或者动态规划算法寻找最优执行计划
  • 在大数据场景下CBO对查询性能非常重要
  • 主流优化器都包含RBO和CBO
  • 对于SQL优化器优化器的新要求,引擎架构的进化-存储计算分离一体化,Cloud-云原生,湖仓一体,DATA-AI
  • 大数据创业当中SQL优化器是必不可少的一个组件
  • AI加持,学习型查询优化器在不断进化
  • RBO和CBO理解不透彻
  • 对于CBO-执行计划枚举不容易掌握

五,引用参考

内容主要参考了青训营第一节课周东炎老师的PPT,感谢老师教授了这节课