OceanBase 4.3 列存存储格式和列存索引存储格式

以 t1 表和索引为例子,下面两张图说明了存储层如何存储数据。

sql 复制代码
create table t1 (id1 int, id2 int, name varchar(10), salary int, primary key(id1, id2))
with column group (each column);

create index idx  (name) storing(salary)
with column group(each column);


  1. 对于主表,主键部分总是会另存一份作为一个 column group。
  2. 对于索引表,索引列+主键列也会作为一个 column group 另存一份
  3. 上述两个 column group 里都会存一个叫做 rowid 的东西,rowid 用于在其它列中定位对应行
  4. rowid 并不是保存于每一行(上述图中仅为概念示意图),而是把 id 的范围保存在微块 meta 中。
  5. 列存的一次点查,先在 btree 里通过主键找到对应行,拿到 rowid,然后 rowid 去列里面定位对应的微块,然后用 rowid 计算微块内的偏移,定位到这个 column group 中的行数据。
  6. 在 each column 的场景中,虽然主键会组成一个 column group,但主键中的每一列,依然会作为一个独立的列再重复保存一次。这里有一定的额外存储开销。
相关推荐
倔强的石头_21 小时前
《Kingbase护城河》——深度解密数据库行锁冲突与等待事件架构
数据库
IT策士21 小时前
Redis 从入门到精通:性能调优与多语言客户端对比
数据库·redis·缓存
Bert.Cai1 天前
Oracle INSTR函数详解
数据库·oracle
茉莉玫瑰花茶1 天前
综合案例 - AI 智能租房助手 [ 5 ]
服务器·数据库·人工智能·python·ai
ywl4708120871 天前
jwt生产token,简单版helloworld
java·数据库·spring
器灵科技1 天前
AI视频工具实测:Seedance/可灵/HappyHorse谁最能打?
java·运维·数据库·人工智能·github
huangdong_1 天前
京东商品图片视频批量下载与m3u8视频合并技术完整实现方案
大数据·前端·数据库
倒流时光三十年1 天前
PostgreSQL CASE 条件表达式详解
数据库·postgresql
字节跳动数据平台1 天前
营销视频进入工业化时代,火山引擎多模态数据湖如何助力多米实现内容生产提效 100+ 倍
数据库
健康平安的活着1 天前
mysql中数据库脚本太大,通过脚本命令修改db名称
数据库·mysql