初识SQL|青训营笔记

276 阅读2分钟

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

课上内容主要为以下四个板块

1. 大数据体系和 SQL

One SQL rules big data all 用SQL来处理大数据

graph LR
Start--SQL-->Parser--AST-->Analyzer--Logical Plan-->id1((Optimizer))--Physical Plan-->Executor
  • 抽象语法树(Abstract Syntax Tree,AST
  • 逻辑计划(Logical Plan
  • 物理计划(Physical Plan
  • 解析器(Parser
  • 分析器(Analyzer
  • 优化选择器(Optimizer
  • 算子(Operator

OptimizerOperator的角色最为重要,此处可以适时联想一下machine learning中关于BGDSGDAdamAdaGrad相关的内容。

2. 常见的查询优化器

  • Top-down Optimizer
    • eg. Volcano、Cascade、SQLServer
  • Bottom-up Optimizer
    • eg. System R、PostgreSQL、IBM、DB2
  • RBO
    • 优化 I/O
    • 优化 Network
    • 优化 CPU & Memory
  • RBO 优化规则
    • 列裁剪
    • 谓词下推
    • 传递闭包
    • Runtime Filter(min-max filter,in-list filter,bloom filter)
    • Join 消除
    • 谓词合并
  • CBO
    • Number of Distinct Value,NDV
    • Selectivity
    • Cardinality

基于规则的RBO中的列减少和谓词下推的方法是要实现尽早的过滤,而传递闭包的方法则是创造Filter使其继续下推,让整体的查找选择性能更优。

基于代价的CBO则是使用一个模型估算执行计划的代价,利用Filter Selectivity这一信号量来选择代价最小的执行计划让整体的查找选择性能更优。

3. 查询优化器的社区开源实践

Apache Calcit是大数据领域很流行的查询优化器

其中的HepPlanner是基于RBO使用pattern匹配子树,执行等价代换来实现最终性能最优

  • HepPlanner内置有100+优化规则
  • 四种匹配机制
    • ARBITRARY : 深度优先
    • TOP_DOWN : 拓扑排序
    • BOTTOM_UP : 自底向上
    • TOP_DOWN : 自顶向下

其原理为通过遍历所有的规则直到没有规则可以被触发,这样一来虽然优化速度快且实现简单但是无法保证性能最优

其中的Volcano Planner是基于Volcano/Cascade框架通过对成本进行最优假设来实现最终性能最优

  • Memo存储候选执行计划
  • 本质AND/OR graph
  • 共享子树减少内存开销
  • Group等价计划集合
  • Group winner实现目前最优计划
  • 剪枝(Branch-and-bound pruning)减少搜索空间

其原理通过利用Top-down动态规划搜索,通过选择winner构建最优执行计划

4. SQL 相关的前沿趋势

  • 选择引擎架构的进化【存储计算分离】
  • 一体化(HTAP,HSAP,HTSAP
  • 湖仓一体 Query Federation
  • 数据库和AI联系在一起
    • AI4DB
      • 自配置
      • 智能调参(OtterTune,QTune)
      • 负载预测/调度
      • 自诊断和自愈合:错误恢复和迁移
      • 自由化
      • 统计信息估计
      • 代价估计
      • 学习型优化器(IBM DB2 LEO
      • 索引/视图推荐
    • DB4AI
      • 内嵌人工智能算法(MLSQL,SQLFLow
      • 内嵌机器学习框架(SparkML,Alink,dl-on-flink)