SQL optimizer 解析(3) | 青训营笔记

251 阅读3分钟

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

社区开源实践

概览

数据库
SQL Optimzer
Hive、Flink、Alibaba MaxCompute...基于Apache Calcite,属于Volccano/Cascade框架
Greenplum、HAWQ自研Orca,属于Volcano/Cascade框架
Alibaba Hologres(定位HSAP)基于Orca,属于Volcano/Cascade框架
TiDB自研,属于Volcano/Cascade框架
Spark自研,RBO + CBO
Presto自研,RBO + CBO
Doris自研,RBO + CBO
ClickHouse自研,RBO
Alibaba OceanBace自研,RBO + CBO

Apache Calcite

查询优化器,解析SQL进行优化,得到执行计划(执行计划的执行交给其它系统),可以单独作为一个优化层

  • One size fits all :统一的SQL查询引擎
  • 模块化,插件化,稳定可靠
  • 支持异构数据模型

    • 关系型
    • 半结构化
    • 流式
    • 地理空间数据
  • 内置RBO和CBO

image.png

Calcite RBO

HepPlanner

优化规则( Rule )

  • Pattern : 匹配表达式子树
  • 等价变换:得到新的表达式

内置有100+优化规则

四种匹配规则

  • ARBITRARY/DEPTH_FIRST:深度优先
  • TOP_DOWN:拓扑顺序
  • BOTTOM_UP:与TOP_DOWN相反

遍历所有的rule,直到没有rule可以被触发

优化速度快,实现简单,但是不保证最优

Calcite CBO

VolcanoPlanner

基于Volcano/Cascade框架

成本最优假设

Memo:存储候选执行计划

  • Group:等价计划集合

Group winner:目前最优计划

剪枝(Branch-and-bound pruning ):减少搜索空间

Top-down 动态规划搜索

从上往下

应用 Rule搜索候选计划

通过关系代数等价规则获取新的逻辑计划

Memo

  • 本质:AND/OR grapl
  • 共享子树减少内存开销

小结

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

前沿趋势

历史

2021年初,Starburst Data 公司为其Trino系统(以前的 PresitoSQL)筹集了1亿美元。

2021年6月,Apache Kafka 话商业化公司Confluent 登陆NSDAQ,首日涨25%,市值超110亿美元。

2021年8月,Apache Iceberg的创建者Ryan Blue 正式成立围绕Iceberg的商业公司Tabular。

2021年8月,Spark背后的公司Databricks宣布获得16亿美元融资,最新估值飙升至380亿美元。

2021年9月,ClickHouse的创建者Alexey正式成立公司:ClickHouse, Inc,获得了5000万美元融资。

2021年10月,基于Apache Pulsar 的商业化公司StreamNative宣布获得2300万美元A轮副融资。

概览

image.png

1、引擎架构变化:存储计算一体化,没办法单扩容存储或计算

2、一体化:事务形数据和分析形数据一体化

3、在一个系统里支持多种处理

4、云原生:离不开存储、计算和分离,K8S,结点可以适当缩减扩充,减少了成本

5、湖仓一条:把数据编制成关系型数据放在数据仓库中,数据仓库限制了对数据的使用,可能丢失原始数据;数据湖的数据是不规整的,不方便查询

6、人工智能与数据库优化结合

DATA+AI

AI4DB

人工智能是否可以帮助数据库做更好的事情

自配置

  • 智能调参(OtterTune,QTune )
  • 负载预测/调度

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

自优化:

  • 统计信息估计(Learned cardinalities )
  • 代价估计
  • 学习型优化器(IBM DB2 LEO)
  • 索引/视图推荐

DB4AI

通过数据库更好的进行人工智能实现

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

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

小结

  • 大数据创业如火如荼,SQL查询优化器仍然是必不可少的一个重要组件
  • 引擎架构的进化、云原生、湖仓一体等对SQL查询优化器有新的要求和挑战
  • AI加持,学习型查询优化器在不断进化