向量化引擎

可获得性

本特性自openGauss 1.0.0版本开始引入。

特性简介

openGauss提供向量化引擎,通常用在OLAP数据仓库类系统,因为分析型系统通常都是数据处理密集型负载,基本上都是采用顺序方式来访问表中大部分的数据,然后进行计算,最后将计算结果输出给终端用户。

客户价值

通过批量计算,大幅提高复杂类查询性能。

特性描述

传统的数据库查询执行都是采用一次一tuple的pipleline执行模式。这样CPU的大部分处理时不是用来真正的处理数据,而是在遍历查询操作树,这样CPU的有效利用率不高。同时这也会导致低指令缓存性能和频繁跳转。更加糟糕的是,这种方式的执行,不能够利用到现在新硬件的新的能力来加速查询的执行。在执行引擎中,另外一个解决方案就是改变一次一tuple 为一次一列的模式。这也是我们向量化执行引擎的一个基础。

向量化引擎是跟列存储技术绑定的,因为列存每列的数据存储在一起,可以认为这些数据是以数组的方式存储的。基于这样的特征,当该列数据需要进行某一同样操作,可以通过一个循环来高效完成对这个数据块各个值的计算。

向量化执行引擎的优势在于:

  • 可以减少节点间的调度,提高CPU的利用率。
  • 因为相同类型的一类数据放在一起,可以更容易的利用硬件与编译的新优化特征。

特性增强

无。

特性约束

无。

依赖关系

依赖于列式存储。