前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Calcite系列(五):执行流程-概览

Calcite系列(五):执行流程-概览

原创
作者头像
Yiwenwu
修改2024-05-12 16:30:37
2180
修改2024-05-12 16:30:37
举报
文章被收录于专栏:Calcite剖析Calcite剖析

通用流程

SQL执行流程有一套通用的步骤,尽管具体的实现可能会因数据库系统的不同而有所差异,但流程相对固定。以下是通用的SQL处理流程:

  1. 解析(Parsing):词法解析与语法解析,将SQL语句转换为数据库系统内部表示,一般以抽象语法树(AST)表示,常用的前端编译器有ANTLR(如Hive、Spark、Presto使用),JavaCC(如Calcite使用);
  2. 验证(Validation):基于元数据提供Schema Catalog数据目录,对AST树遍历校验SQL有效性,并绑定节点信息等操作,例如,检查SQL中表和列是否存在。完成校验后,将AST抽象语法专转为逻辑计划树(LogicalPlan)。
  3. 优化(Optimization):基于逻辑计划树进行计划树优化。计划树优化可分为两种类型:
    1. 逻辑优化:基于关系代数理论进行逻辑优化,得到最优逻辑计划树
    2. 物理优化:基于执行要素(如表扫描方式、索引等)进行物理优化,得到最优物理计划树(PhysicalPlan)
  4. 执行(Execution):执行引擎基于最优物理计划完成查询操作,计算结果并返回

Calcite流程

Calcite的SQL执行流程也是基于通用框架扩展实现的,可分为如下五个步骤:

  1. 语法解析:基于SqlParser解析器将SQL语句解析为SqlNode抽象语法树(AST)
  2. 合法性校验:基于SqlValidator校验器和元数据Schema信息校验SqlNode语法树的合法性
  3. 计划树构建:构建出基于关系代数表达的逻辑计划树RelNode,方式一. 基于RelBuilder API调用构建;方式二:基于SqlToRelConverter将SqlNode转换为 RelNode计划树
  4. 优化器优化:基于RelOptPlanner优化器进行计划树优化,包括逻辑优化与物理优化,内置RBO优化器和CBO优化器
  5. 计划树执行:基于优化后的RelNode进行执行计算并返回计算结果

其中,第4步计划树优化是整个执行流程的最核心和复杂模块,后续文章将针对各个步骤进行详细阐述。

在执行过程中,Calcite的对象变换过程所图所示,最终Planner优化器通过RelOptPlanner#findBestExp 调用方法搜索最佳计划树,目前Calcite内置的优化器有两种:

  • HepPlanner:基于RBO规则的heuristic启发式优化器
  • VolcanoPlanner:基于CBO代价的的动态规划优化器

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 通用流程
  • Calcite流程
相关产品与服务
大数据处理套件 TBDS
腾讯大数据处理套件(Tencent Big Data Suite,TBDS)依托腾讯多年海量数据处理经验,基于云原生技术和泛 Hadoop 生态开源技术提供的可靠、安全、易用的大数据处理平台。 TBDS可在公有云、私有云、非云化环境,根据不同数据处理需求组合合适的存算分析组件,包括 Hive、Spark、HBase、Flink、Presto、Iceberg、Elasticsearch、StarRocks 等,以快速构建企业级数据湖仓。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com