关于OceanBase的LSM-Tree存储架构,以下说法正确的是:

关于OceanBase的LSM-Tree存储架构,以下说法正确的是:

A. 主要通过减少随机写入来提升写入性能
B. 所有数据都直接写入SSTable文件
C. 读取操作不会访问MemTable
D. 转储(Minor Compaction)会删除所有过期数据

选A
A正确,LSM-Tree 架构的核心优势在于将随机写入转化为顺序写入。
B错误, 数据并非直接写入 SSTable。实际的写入路径是:首先写入内存中的 MemTable ,当 MemTable 的大小达到一定阈值后,才会通过转储 操作将其数据写入到磁盘的 SSTable 文件中。
C错误, 读取操作必须同时访问 内存中的 MemTable 和磁盘上的 SSTable。
D错误,转储只负责将数据写入磁盘,并不会主动清理多版本或已删除的数据。

✅ 选项 A 正确:
OceanBase 存储引擎基于 LSM-Tree(日志结构合并树)架构设计,其核心优势正是通过将传统数据库的“随机写入”转化为磁盘的“顺序写入”,彻底解决了随机 IO 带来的性能痛点,从而大幅提升了高并发场景下的写入性能3。
❌ 选项 B 错误:
在 LSM-Tree 架构中,数据并不是直接写入 SSTable。所有的增、删、改等 DML 操作首先会写入内存中的 MemTable;当 MemTable 达到一定阈值被冻结后,才会异步刷盘生成增量静态数据文件(Mini SSTable),最终通过合并机制形成基线数据(Major SSTable)1。
❌ 选项 C 错误:
由于 OceanBase 采用“基线加增量”的设计,原理上每次查询既需要读取磁盘上的基线数据(SSTable),也需要读取内存中的动态增量数据(MemTable)。系统会将这两部分的查询结果进行归并,返回最新的数据给 SQL 层6。
❌ 选项 D 错误:
转储(Minor Freeze/Compaction)仅仅是将内存中冻结的 MemTable 数据写到磁盘上单独的转储文件中,不与 SSTable 数据做合并,因此不会删除过期数据。真正负责清理无效数据和回收存储空间的是全量合并(Major Compaction),并且它只会清理超出保留范围(如 undo_retention 配置)的历史多版本数据,而不是删除所有过期数据3。