表和索引是在一个memtable里吗

【产品名称】

【产品版本】

【问题描述】

请问下一个普通的表和他的索引是在一个memtable/sstable里吗?

索引存储:

在 OceanBase 数据库中,索引表的存储类似于普通的数据表,其数据也是存储在宏块和微块的结构中。由于 OceanBase 数据库使用的是聚集索引表模型,因此在索引的行中除了用户指定的索引列之外,还会存储主表的主键列,以方便进行回表。

表存储:​OceanBase 数据库中使用宏块来存储数据,每张表可能包含多个宏块,每个宏块占用 2M 空间。宏块内包含一个或者多个微块,每个微块内包含一行或者多行数据。


在 OceanBase 数据库中, 对于用户表支持创建局部索引,局部索引的特征就是在存储上会和主表绑定在同一个 partiton 内部存储,主表和每个索引在内部会独立存储在一个 Table Store 内,在每一个Table Store 中会包含多个 SSTable 和 MEMTable。MEMTable 存储于内存,存储动态数据,提供读写操作;SSTable 存储于磁盘,存储静态数据并且只读。

1 个赞

“主表和每个索引在内部会独立存储在一个 Table Store 内” 这句话的意思是主表和索引不在同一个table store内部的意思吧?还是他们在同一个table store内部?



这个表你可以参考一下。表和索引应该是在一个table store内的。图中可以看出table stroe是有多个的,所以表和索引应该是分配在一个table store下的。而每个table store是相对独立的。