分区、memtable关系

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】oceanbase数据库分区和memtable对应关系

2 个赞

一、基本概念回顾

1. 分区(Partition)

  • OceanBase 是 分区表架构,数据按分区(例如按 range/hash/list 等)切分,分布在多个 OBServer 节点上。
  • 每个分区对应一个 独立的存储与事务单元,拥有自己的日志流(Log Stream)、事务状态、MemTable 列表等。
  • 分区是数据存储和事务调度的最小单位。

2. MemTable

  • MemTable 是位于内存中的一张“临时表”,用于缓存增量写入的数据
  • 所有的 DML(INSERT、UPDATE、DELETE)操作首先写入 MemTable,然后异步落盘到 SSTable(磁盘)。
  • MemTable 是事务的第一个落脚点,也是查询时优先查找的层(MemTable + SSTable 组成 LSM-like 架构)。

二、分区与 MemTable 的对应关系

OceanBase 中:

每个分区(Partition)在内存中维护一组 MemTable(通常是一个链表结构),用来管理该分区最近的增量数据。**

可以这样理解:

概念 对应关系
分区 拥有独立的 MemTable 列表
MemTable 属于唯一的一个分区
OBServer 持有多个分区,每个分区都有自己的 MemTable 集合
2 个赞

666

学习到了