首批通过分布式安全可靠测评,为关键业务系统打造
转储管理概述
更新时间:2026-04-10 11:58:01
本节主要介绍转储的实现原理。
OceanBase 数据库的存储引擎采用 LSM-Tree 架构,数据大体上被分为 MemTable 和 SSTable 两部分。SSTable 会继续细分为 Mini SSTable、Minor SSTable、Major SSTable 三类。
转储包含两个过程:Mini Compaction 和 Minor Compaction。当 MemTable 的内存使用达到一定阈值时,就需要将 MemTable 中的数据存储到磁盘上的 Mini SSTable 以释放内存空间,该过程称为 Mini Compaction。随着用户数据的写入,Mini SSTable 的数量越来越多,当 Mini SSTable 的数量超过一定的阈值时,后台会自动触发 Minor Compaction。在转储之前首先需要保证被转储的 MemTable 不再进行新的数据写入,该过程称为冻结(Minor Freeze),冻结会阻止当前活跃的 MemTable 再有新的写入,同时会生成新的活跃 MemTable。
SSTable 的分层策略
OceanBase 数据库在转储的实现过程中引入了 SSTable 的分层策略,在原有的基础上增加了 L0 层。
L0 层(Mini SSTable)
被冻结的 MemTable 会直接 Flush 为 Mini SSTable。OceanBase 数据库内部可以同时存在多个 Mini SSTable。
L1 层(Minor SSTable)
大多数情况下仅有一个 Minor SSTable。
由 L0 层的多个 Mini SSTable 与原有的 Minor SSTable 在 L1 层生成新的 Minor SSTable。
L2 层(Major SSTable)
基线数据,在合并时产生。一般情况下仅有一个。
SSTable 的分层策略的内部实现原理如下图所示。

转储触发方式
转储支持自动触发和手动触发两种方式。