• 走进 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 的计划优。

  • 相关阅读:
    Express 中间件的分类
    Java刷题day23
    JUC——并发编程—第二部分
    数据库范式
    k8s(三): 基本概念-ReplicaSet与Deployment
    【语音去噪】基于切比雪夫+椭圆形低通滤波器语音去噪附GUI界面
    k8s1.24 部署springboot项目
    面试突击89:事务隔离级别和传播机制有什么区别?
    Talk|北京大学PKU-DAIR余昭辰:从多模态理解到生成 - 从LLM到Diffusion Model
    10 Dubbo 配置实战
  • 原文地址:https://blog.csdn.net/ZNBase/article/details/127746178