写点什么

走进 Orca 架构及技术世界

作者:开务数据库
  • 2022-11-08
    上海
  • 本文字数:941 字

    阅读完需:约 3 分钟

走进 Orca 架构及技术世界

 Orca 的简介


Orca 是基于 cascades 框架的查询优化器,其中诸多概念都是源于 volcano / cascades。Orca 有三大优点:模块化、高延展性、高并发性。其模块化的设计,能以插件的形式用于其他数据库系统。


Orca 主要的优化是 CBO 的优化。CBO 是 Cost - Based Optimization 的缩写,中文叫做“基于成本的优化”。成本指的是查询中使用的 CPU 资源,内存资源,网络资源,磁盘资源。


CBO 简单来说就是探索出所有可能的查询路径,然后分别计算出路径的成本,选择出成本最小的一条路径的一种优化手段。


介绍了 Orca 的部署结构,如下图:



 Orca 的架构


整体架构图如下:



  • Memo :用来存储执行计划的搜索空间,它有一系列的集合 (Group)构成,每个 Group 代表了执行计划的一个子表达式(想对应与查询语句的一个子表达式)。不同的 Group 又产生相互依赖的关系。Group 就代表整个查询语句。


  • Search & Job Scheduler :主要分成三步,一是 Exploration,探索和补全计划空间,就是根据优化规则不断生成语义相同的逻辑表达式。第二步是 Implementation,就是实例化逻辑表达式变成物理算子。第三步是优化,把计划的必要条件都加上。


  • Transformations :就是上面优化中第一步 Exploration 的详解,如何通过优化规则来补全计划空间。


  • Property Enforcement:增加算子的实现需要一些先决条件。


 Orca 的源码分析


起始入口:

COptTasks::SzOptimize->COptTasks::Execute->gpos_exec->gpos::CAutoTaskProxy::Execute->gpos::CWorker::Execute->gpos::CTask::Execute->COptTasks::PvOptimizeTask->gpopt::COptimizer::PdxlnOptimize->gpopt::COptimizer::PexprOptimize


1、Actions 机制:一般分为三部分,每个部分都有对应的处理函数。


2、Xform 机制:初始化时加入规则,在环境变量中可以设置是否起用规则,启动后会设置到 Actions 中,Xform 子类都会实现 PxfsCandidates,安排要进行处理的规则,最终会在 Transform 函数中调用。


3、状态切换:处理规则就是先处理子结点,然后处理自身结点。


4、代价评估处理:总的代价会放到 Context 的 Hash 表结构中,在 BetterThan 函数判断是否是代价更优,固定规则有三个。

  • 规则 1 :分区计划比非分区计划优;

  • 规则 2 :哈希分布比随机分布计划优;

  • 规则 3 :Join 时,行数一样的情况下,有更深 Outer Child 的计划优。

用户头像

还未添加个人签名 2021-04-29 加入

还未添加个人简介

评论

发布
暂无评论
走进 Orca 架构及技术世界_数据库·_开务数据库_InfoQ写作社区