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

  • 相关阅读:
    nvm下载安装
    Android Studio的初次认识
    百度工程师眼中的云原生可观测性追踪技术
    Presto -- Trino391版本的集群部署
    036:vue导出页面生成pdf文件
    小学生python游戏编程arcade----碰撞精灵消失问题
    使用代理后pip install 出现ssl错误
    PyG (PyTorch Geometric) Dropbox系图数据集无法下载的解决方案(AMiner, DBLP)(持续更新ing...)
    spring boot实现不同生产环境下的文件配置
    【无标题】
  • 原文地址:https://blog.csdn.net/ZNBase/article/details/127746178