OceanBase集群的数据库实例(OBServer)内部由不同的组件相互协作。逻辑上看,这些组件从底层向上由多租户层、存储层、复制层、均衡层、事务层、SQL层、接入层组成。
下面重点讨论一下OBServer的存储层。
视频讲解如下 |
---|
【赵渝强老师】OceanBase observer节点的存储层 |
存储层以一张表或者一个分区为粒度提供数据存储与访问,每个分区对应一个用于存储数据的Tablet(分片),用户定义的非分区表也会对应一个Tablet。Tablet的内部是分层存储的结构,总共有四层:MemTable、L0层Mini SSTable、L1层Minor SSTable以及Major SSTable。DML操作插入、更新、删除等首先写入MemT able,待MemTable达到一定大小时转储到磁盘成为L0层Mini SSTable。L0层Mini SSTable个数达到阈值后会将多个L0层Mini SSTable合并成一个L1层Minor SSTable。在每天配置的业务低峰期,系统会将所有的MemTable、L0层Mini SSTable和L1层Minor SSTable合并成一个Major SSTable。
下图说明了OceanBase写入数据的过程。
注意:每个SSTable由若干个大小为2MB的定长宏块组成,每个宏块内部由多个不定长微块组成。