暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss列存储(二)

原创 数巨小码人 2024-12-20
281

1. cstore

列存储格式是OLAP类数据库系统最常用的数据格式,适合复杂查询、范围统计类查询的在线分析型处理系统。与行存储格式不同,cstore列存储的主体数据文件以CU为I/O单元,只支持追加写操作,因此cstore只有读共享缓冲区。

2. cstore存储单元结构

(1)CU的CRC值。

(2)CU的magic值。

(3)CU的属性值。

(4)压缩后NULL值位图长度。

(5)压缩前数据长度。

(6)压缩后数据长度。

(7)压缩后NULL值位图内容。

(8)压缩后数据内容,即实际写入磁盘的CU主体数据内容。

3. CUDESC表的结构

字段名

类型

含义

col_id

integer

字段序号

cu_id

oid

CU序号(该列的第几个CU)

min

text

CU中该字段的最小值

max

text

CU中该字段的最大值

row_count

integer

CU中的行数

cu_mode

integer

CU模式

size

bigint

CU大小

cu_pointer

text

CU偏移(8K对齐)

magic

integer

CU的magic号

extra

text

预留字段

4. cstore表查询执行流程

step1:加载CUDESC表中可见的记录。

step2:如果查询有谓词条件,那么使用CUDESC记录中的min和max值进行初筛。

step3:根据CUDESC中对应CU的偏移,依次从各个列的CU文件中加载对应的CU数据。step4:根据字段的类型,预绑定对应的CU加载和解析函数。

step5:如果是全NULL CU,拼装NULL向量数组返回。

step6:如果min和max相同,拼装一个全是相同值的向量数组返回。

step7:从共享缓冲中或者CU文件中读取对应CU的数据。

step8:将CU数据重新拼装成向量数组。

最后修改时间:2024-12-20 18:13:15
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论