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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




