OceanBase 基于 LSM-Tree 存储引擎,它是如何平衡“内存写入”与“磁盘读取”性能的?

OceanBase 基于 LSM-Tree 存储引擎,是如何平衡“内存写入”与“磁盘读取”性能的?

2 个赞

OceanBase 采用了 “基线数据(SSTable)+ 增量数据(MemTable)” 的架构,并通过多层缓存机制来优化读取性能:

写入路径:数据首先写入内存中的 MemTable(增量数据),当 MemTable 达到阈值时触发转储(Minor Compaction)或每日合并(Major Compaction),将数据持久化到磁盘成为 SSTable(基线数据)。

读取路径:读取时会合并 MemTable 和 SSTable 的数据。为了减少磁盘 I/O,OceanBase 设计了 8 层内存缓存体系,包括 BloomFilter Cache(判断数据是否存在)、Row Cache(行缓存)、Block Cache(数据块缓存)等,极力避免随机磁盘读取。

2 个赞