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 个赞