向量化引擎
可获得性
本特性自openGauss 1.0.0版本开始引入。
特性简介
openGauss提供向量化引擎,通常用在OLAP数据仓库类系统。主要是因为分析型系统通常是数据处理密集型,基本上都是采用顺序方式来访问表中大部分的数据,然后再进行计算,最后将计算结果输出给用户。
客户价值
通过批量计算,大幅提高复杂类查询性能。
特性描述
传统的数据库查询执行都是采用一次一数组(tuple)的pipeline执行模式,因此CPU的大部分处理时间不是用来处理数据,而是遍历查询操作树。这种情况下CPU的有效利用率不高,同时也会导致低指令缓存性能和频繁跳转。更加糟糕的是,这种方式的执行,不能够利用现代硬件的新优化特征来加速查询的执行。在执行引擎中,另外一个解决方案就是改变一次一数组(tuple)为一次一列的模式。这也是我们向量化执行引擎的一个基础。
向量化引擎是跟列存储技术绑定的,因为列存储时每列数据存储在一起,可以认为这些数据是以数组的方式存储的。基于这样的特征,当该列数据需要进行某一同样操作,可以通过一个循环来高效完成对这个数据块各个值的计算。
向量化执行引擎的优势在于:
- 可以减少节点间的调度,提高CPU的利用率。
- 因为相同类型的数据放在一起,可以更容易的利用硬件与编译的新优化特征。
特性增强
无。
特性约束
无。
依赖关系
依赖于列存储。