2. 多机并行执行框架
- 节点逻辑适配: 通过适配现有openGauss分布式执行流程,在资源池化集群中引入QC(Query Coordinator) 与 QE(Query Executor) 的逻辑概念,匹配CN/DN角色。且集群任一节点发起查询请求均可成为QC, QE也可通过GUC参数动态配置。
图 3 SPQ工作集群
- 自适应扫描:SPQ设计实现自适应扫描机制,不再限定每个Worker扫描特定的ID。 采用 请求-响应(Request-Response)模式,通过QC进程与QE Worker进程间的特定RPC通信机制,由QC进程负责告知每个Worker进程可执行的扫描任务,从而消除计算数据倾斜的问题。
图 4 自适应扫描
- 基础算子支持: SPQ多机并行执行器对原有基础算子(Scan,Join,Aggregate,Sort等)及Stream类算子(Gather/Broadcast/Redistribute)的并行化提供支持。 在原有算子的实现基础上,为确保节点间数据的切分读取及执行过程完整适配ORCA生成的分布式执行计划,新增/修改以下算子:
- 扫描类算子: 新增SpqSeqScan、SpqIndexScan、SpqIndexOnlyScan、SpqBitmapHeapScan四类算子,适配分布式扫描范围。
- 计算类算子: 新增Aggregate分布式FinalAgg、PartialAgg计算逻辑。HashJoin算子支持Orca生成的LASJ_NOTIN semi-join分支。
- Shuffle类算子:新增SpqRemoteQuery、Redistribute算子,适配分布式计划。
图 5 TPC-H性能对比数据
本次测试采用TPC-H 22 条标准语句,测试数据量100G,在资源池化(一主两备)场景下执行SPQ与openGauss原生语句,整体性能提升约2.58倍。 详情查看:opengauss.org 详情查看:docs-opengauss.osinfra.cn