ORCA(Orca: A Modular Query Optimizer Architecture for Big Data)是Pivotal数据管理产品(包括GPDB和HAWQ)的新查询优化器,具有以下特点和组件:
-
特点:
- 模块化:使用高度可扩展的元数据和系统描述抽象,不再局限于特定主机系统,可通过插件快速移植到其他数据管理系统。
- 可扩展性:将查询及其优化的所有元素视为平等的一等公民,避免了多阶段优化的陷阱,便于扩展新的优化或查询结构。
- 多核就绪:部署了高效的多核感知调度程序,将优化子任务分布在多个内核上,加速优化过程。
- 可验证性:具有特殊规定用于确定正确性和性能,有助于快速开发并减少新功能和错误修复的周转时间。
- 性能优异:相较于之前的系统有显著改进,在许多情况下查询速度可提高10倍至1000倍。
-
组件:
- DXL:用于在优化器和数据库系统之间交换信息的数据交换语言框架,使用XML编码信息,包括查询、输出计划和元数据等,并通过简单通信协议发送初始查询结构和检索优化计划。
- Memo:优化器生成的计划替代方案的空间被编码在这个紧凑内存数据结构中,由一组容器组成,每个容器包含逻辑上等价的表达式,用于捕获查询的不同子目标。
- 搜索和作业调度器:搜索机制用于浏览可能的计划替代方案并确定成本最低的计划,由专门的作业调度器创建依赖或并行工作单元,在探索、实现和优化三个主要步骤中执行查询优化。
- 转换:通过应用转换规则生成计划替代方案,这些规则可以生成等价的逻辑表达式或现有表达式的物理实现,结果被复制到Memo中。
- 属性执行:包括一个可扩展的框架,用于根据正式的属性规范描述查询要求和计划特征,允许每个运算符根据子计划的属性和自身行为控制执行器的放置。
- 元数据缓存:在优化器端缓存元数据,仅在需要时从目录中检索部分更改的数据,减少每次查询发送元数据的开销,并在测试和调试期间抽象出数据库系统细节。
- GPOS:操作系统抽象层,为Orca提供与不同API的操作系统交互所需的基础设施,包括内存管理器、并发控制原语、异常处理、文件I/O和同步数据结构等。
-
查询优化工作流程:
- 优化工作流程:
- 探索:触发生成逻辑等价表达式的转换规则,添加新的组表达式或创建新的组,同时基于表达式拓扑的内置重复检测机制避免重复表达式。
- 统计推导:计算Memo组的统计信息,选择最有可能提供可靠统计信息的组表达式,递归地触发子组的统计推导,并组合子组的统计对象构建目标组的统计对象。
- 实现:触发生成逻辑表达式物理实现的转换规则,如从逻辑Get生成物理表扫描,或生成哈希和嵌套循环连接实现等。
- 优化:向Memo的根组提交初始优化请求,指定查询要求,每个物理组表达式根据要求将请求传递给子组,Orca缓存计算的请求,根据优化请求从Memo中提取最佳计划,并将其序列化为DXL格式发送给数据库系统执行。
- 并行查询优化:查询优化是数据库系统中最CPU密集的过程,Orca将优化过程分解为小的工作单元(优化作业),目前有七种不同类型的优化作业。优化作业之间存在依赖关系,通过专门的作业调度器来最大化作业依赖图的扇出,提供并行查询优化所需的基础设施,并通过为每个组附加作业队列来减少作业同步开销。
- 优化工作流程:
-
其他相关功能:
- 元数据交换:通过元数据提供程序与数据库系统进行元数据交换,这些提供程序是系统特定的插件,用于从数据库系统检索元数据。Orca还实现了基于文件的MD Provider,可从DXL文件加载元数据。
- 可验证性工具:
- AMPERe:用于自动捕获和重放优化器异常的工具,当遇到意外错误时自动触发转储,包含输入查询、优化器配置和元数据等最小量数据,可在系统外重放以复现问题,也可用作测试框架。
- TAQO:用于测试查询优化器成本模型准确性的内置工具,通过对优化器考虑的计划进行成本计算和执行,基于估计成本和实际成本的排名相关性来衡量优化器的准确性。
综上所述,ORCA查询优化器通过其独特的架构和组件设计,能够高效地处理大数据环境下的查询优化任务,提供高性能和可扩展的查询处理能力。
产品简介
- 梧桐数据库(WuTongDB)是基于 Apache HAWQ 打造的一款分布式 OLAP 数据库。产品通过存算分离架构提供高可用、高可靠、高扩展能力,实现了向量化计算引擎提供极速数据分析能力,通过多异构存储关联查询实现湖仓融合能力,可以帮助企业用户轻松构建核心数仓和湖仓一体数据平台。
- 2023年6月,梧桐数据库(WuTongDB)产品通过信通院可信数据库分布式分析型数据库基础能力测评,在基础能力、运维能力、兼容性、安全性、高可用、高扩展方面获得认可。
点击访问:
梧桐数据库(WuTongDB)相关文章
梧桐数据库(WuTongDB)产品宣传材料
梧桐数据库(WuTongDB)百科