关于数据库:走进-Orca-架构及技术世界

5次阅读

共计 1164 个字符,预计需要花费 3 分钟才能阅读完成。

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 的打算优。
正文完
 0