OceanBase 中 MemTable 相关描述正确的是?
A. MemTable 在内存中,接收事务写入
B. MemTable 写满后会触发转储(minor compaction)
C. 转储完成后旧 MemTable 会变成冻结 MemTable
D. MemTable 数据永久保存在磁盘
正确答案是 A 。
OceanBase 中 MemTable 的相关描述,正确的只有 A 。
正确选项:A. MemTable 在内存中,接收事务写入
OceanBase 基于 LSM-Tree 架构,将数据分为内存中的增量数据(MemTable)和磁盘上的静态数据(SSTable)。所有 DML 操作(插入、更新、删除)首先写入 MemTable,且 MemTable 支持读写,存储于内存中。
错误选项解析
- B. MemTable 写满后会触发转储(minor compaction) :描述不准确。MemTable 写满后首先触发的是冻结(freeze) ,生成 Frozen MemTable;随后触发的是 Mini Compaction (将 Frozen MemTable 转存为磁盘上的 Mini SSTable),而非直接的 “minor compaction”。
- C. 转储完成后旧 MemTable 会变成冻结 MemTable :顺序颠倒。正确流程是:Active MemTable 写满后先 变为 Frozen MemTable,然后 才对 Frozen MemTable 执行转储,转储完成后其内存被释放。
- D. MemTable 数据永久保存在磁盘 :错误。MemTable 本身是内存结构,其数据仅在内存中;只有经过转储变为 SSTable 后,数据才持久化到磁盘。