GaussDB的向量化处理技术

本文将深入探讨GaussDB中的向量化处理技术,涵盖其常见特性和实际应用。先详细介绍存储数据和即时数据(正在处理的数据)的按列组织格式,并阐述其优势。后通过分析SIMD(单指令多数据流)处理技术的一般原理,探讨在GaussDB中的巧妙运用。

一、列处理和即时数据

关系数据库管理系统(DBMS)将数据组织在表中,表包含列和行。表通常按行存储,同一行的数据存放在一起。表也可以按列存储,此时表的行被划分为行组,同一行组中同一列的数据存放在一起。

图1展示了一个员工表。在左侧,表按行组织;在右侧,表按列组织,每个行组包含两行。

图片

图1:按行组织和按列组织的员工表

磁盘上存储的持久化数据和内存中正在处理的即时数据都可以按列组织。持久化数据的行组通常较大,旨在实现更好的压缩率和更高的IO效率。而即时数据的行组相对较小,通常只有几千行,旨在减少内存消耗并实现更好的CPU缓存效率。

GaussDB向量SQL引擎就是为即时数据的列式处理而设计的。即时数据在GaussDB向量SQL引擎中的处理单元为 VectorBatch。Vector代表单列的行组,VectorBatch 代表多个单列的行组,参见图2。

图片

GaussDB向量SQL引擎算子接收一个VectorBatch输出一个VectorBatch。GaussDB向量SQL 引擎算子以批处理模式处理一个 SQL 查询:一次处理一批行,而不是一次处理一行。每个 VectorBatch 包含最多1000行。GaussDB 向量 SQL 引擎算子使用面向列的处理和优化来高效处理 VectorBatch。

例如,当一个算子需要计算多个列的哈希值时,它首先完成对 VectorBatch 中所有行的第一列的哈希值计算,然后是第二列,以此类推。最后,它累加所有列的哈希值。

按列存储和处理数据有几个好处:

1. 按列存储的数据可以更好地压缩

按列存储的数据可以更好地压缩。同一列的数据通常具有较高的重复率或相似的值。这些是压缩算法实现高压缩率的良好数据特征。例如,在员工表中,DeptID(部门ID)列的数据具

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gauss松鼠会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值