新人来报道,当 OceanBase 发生 minor freeze(小合并),主要处理的是
A. 将内存 MemTable 转成磁盘 SSTable,不做 SSTable 合并
B. 把磁盘上多个 SSTable 合并成一个大 SSTable
C. 清理过期的 Paxos 日志
D. 做全量数据校验
A. 将内存 MemTable 转成磁盘 SSTable,不做 SSTable 合并
Minor Freeze 只负责把 MemTable 冻结并转储为磁盘 Mini SSTable,SSTable 之间的合并是 Minor/Major Merge 的工作。
正确答案:A
解析:
Minor Freeze(小合并/转储)的核心操作是:当 MemTable 内存使用达到阈值时,冻结当前的活跃 MemTable,将其中的数据 flush 到磁盘上生成新的 Mini SSTable,然后释放内存供新的 MemTable 使用。这个过程不会将数据与已有的 SSTable 做全局归并。
其他选项对应的机制如下:
- B(把磁盘上多个 SSTable 合并成一个大 SSTable):这是 Major Freeze(大合并) 的工作,大合并会将 MemTable 和 SSTable 在全局快照点下做全量归并,生成新的基线 SSTable。
- C(清理过期的 Paxos 日志):这属于日志 GC(Garbage Collection)的范畴,不是 Minor Freeze 的职责。
- D(做全量数据校验):全量数据校验通常在大合并过程中进行,用于检查副本间数据一致性,也不是 Minor Freeze 的功能。
简单来说,Minor Freeze 是一个轻量级、分区级别的操作,目的是快速释放内存,资源消耗小、频率高;而 Major Freeze 是全局级别的操作,资源消耗大,通常在业务低峰期(如凌晨 2 点)执行。