SQL Optimizer 解析 | 青训营笔记

79 阅读3分钟

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

一、本堂课重点内容:

课程主要分为四个部分
第一部分介绍了大数据体系和SQL的处理流程
第二部分介绍了查询优化器的分类,重点讲解了RBO和CBO
第三部分介绍了社区开源实践,重点介绍了Apache Calcite项目
第四部分介绍了SQL引擎的前沿方向

二、知识点介绍:

  • Sql处理流程如下

image.png

  • Rule-based Optimizer(RBO)
    列裁剪 谓词下推 传递闭包 Runtime Filter …… 实现简单,优化速度快 一般是遍历各种经验规则,不能保证最优的执行计划

  • Cost-based Optimizer(CBO)
    基于RBO得到等价的执行计划 通过比较算子代价总和选择最优的执行计划
    同时依赖统计信息,需要较为准确的基数

  • 社区开源实践概览

image.png

  • Volcano/Cascade的精髓是Memo、动态规划和减枝

  • 前沿发展方向
    引擎架构的进化 云原生 湖仓一体 DATA + AI

三、课后拓展:

  • 关于HSAP, HTAP, HTSAP
    HTAP 数据库能够在一份数据上同时支撑业务系统运行和 OLAP 场景,避免在传统的架构当中,在线与离线数据库之间要有大量的数据交互。

    HTAP 基于分布式架构支持弹性扩容,可按需扩展分布,或者说数据存储,轻松地应对高并发、海量数据的场景。在 HTAP 系统内部,数据按照行存和列存的形式进行混合存储,通过 TP/AP 负载隔离的方式,通过用户提供统一的查询入口,一站式地解决两类工作和负载的不同诉求。

    HSAP 是面向 Serving 和 AP 场景混合设计的系统,Serving 场景,尤其是在特征存储这种场景下,数据的实时和批量摄入能力是一个刚性需求。

    HSAP 基于分布式架构支持弹性扩容,也能够按需扩展吞吐以及存储,来应对高并发和海量数据分析的一个场景。在 HSAP 系统内部,数据也是按照行存和列存的这种形态进行混合存储,通过 Serving AP 负载隔离的这种方式,为用户提供一个统一的查询入口,一站式地解决两类工作负载不同诉求。

    HTSAP在上述HSAP、HTAP的基础上改进,为实现One Database的美好愿景。

  • 存储计算分离
    主要目的是为了避免扩容时受限制,实现数据的独立扩展和快速恢复

    计算部分都是为数据库提供算力,其最基本的资源是CPU和内存,存储始终承担着数据持久化的工作

    存算分离能再次流行是因为之前受限于的技术障碍:传输性能与存储能力问题已得到解决。

    存算分离后计算实例可以摆脱物理服务器的束缚,任意迁移且不需要进行数据同步,这使得弹性扩展变得极为容易

四、引用参考:

  • 面向未来的HTSAP一体化数据平台该是什么样子?

www.infoq.cn/article/PRs…

  • 浅谈分布式数据库的计算和存储分离

aijishu.com/a/106000000…