一、LSM-Tree架构基础与OceanBase实现原理
1.1 LSM-Tree核心设计理念
LSM-Tree(Log-Structured Merge-Tree)是一种为现代存储系统设计的高性能数据结构,其核心思想是将随机写入转换为顺序写入,从而显著提升数据库的写入吞吐能力。与传统B+树结构相比,LSM-Tree通过牺牲部分读取性能来换取极高的写入效率,这种权衡特别适合写入密集型的应用场景。
OceanBase对经典LSM-Tree架构进行了创新性改造,形成了独特的"基线-增量"分离设计。数据被明确划分为两部分:
- MemTable(内存表):驻留在内存中的数据结构,负责接收所有DML操作(插入、更新、删除)。MemTable采用跳表(SkipList)或B+树等有序结构组织数据,保证数据按主键有序排列。
- SSTable(Sorted String Table):存储在磁盘上的不可变数据文件,按照主键严格排序。SSTable又分为Minor SSTable(增量数据)和Major SSTable(基线数据)两种类型。
这种架构的核心优势在于:
- 写入加速:所有写操作首先进入内存中的MemTable,几乎达到内存操作的速度,避免了传统数据库直接修改磁盘数据带来的随机I/O开销。
- 顺序写入:当MemTabl