openGauss之向量化执行引擎代码走读

一. 前言

        openGauss向量化执行引擎是指原来计算过程中一行元组一行元组的处理的方式改成一批元组一批地处理,从而减少调用栈和CPU切换开销,一般在大数据量聚合查询中会有较大的性能提升。本文主要以向量化做sum聚合为例走读代码了解openGauss中是怎么实现向量化计算能力的。

        向量化操作的执行计划如上所示,可以看到,向量化计算时,需要将tablescan的数据转成向量话数据计算,计算完成后再转成普通的行存数据输出。本文也按照这思路走读代码。

二. 生成向量化执行计划

     执行计划生成是指将普通的执行计划转成向量化执行计划,入口在try_vectorize_plan中:

try_vectorize_plan
    vectorize_plan
         // 对各种算子进行向量化转换,以SeqScan为例
         switch (nodeTag(result_plan)) {
             case T_SeqScan:
                 make_rowtove_plan
                     make_rowtovec
                         RowToVec* node = makeNode(RowToVec);   // 生成行转向量算子
                         plan->lefttree = lefttree;
         }
         
         if (IsVecOutput(top_plan))
             top_plan = (Plan*)mak
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值