首批通过分布式安全可靠测评,为关键业务系统打造
转储和合并概述
更新时间:2026-04-10 11:58:01
OceanBase 数据库的存储引擎基于 LSM-Tree 架构,数据大体上被分为内存中的 MemTable 和磁盘上的 SSTable 两部分。随着用户数据写入 MemTable,MemTable 超过内存阈值转化为磁盘上的 SSTable,SSTable 的数量会持续增多,导致查询需要访问的 SSTable 文件增多,降低查询的效率,因此引入了 LSM-Tree 最核心的概念:Compaction。
OceanBase 数据库使用了 Tiered & Leveled 的 Compaction 策略,将 SSTable 划分为三层,L0 层使用 tiered 模式,L1 层、L2 层使用 Leveled 模式。

Compaction 类型
LSM-Tree 的 Compaction 操作是对数据的一次重新整合,其实质是多路归并排序,将若干个 SSTable 按照 Rowkey 递增排序,最后输出为一个 SSTable。
在 OceanBase 数据库中,Compaction 有以下几种类型:
Mini Compaction:将 MemTable 转变成 Mini SSTable。可以通过自动或手动方式触发。
Minor Compaction:将多个 Mini SSTable 合成一个新的 Mini SSTable 或者多个 Mini SSTable 与一个 Minor SSTable 合成一个新的 Minor SSTable。由后台调度线程触发,不可手动触发。
Medium Compaction:将指定分区原来的基线 SSTable(Major SSTable)与该分区所有的 Mini SSTable/Minor SSTable 整体合并为一个新的 Major SSTable。可以通过自动或手动方式触发。
Major Compaction:将租户下的所有分区原来的基线 SSTable(Major SSTable)与所有的 Mini SSTable/Minor SSTable 整体合并为一个新的 Major SSTable。可以通过自动或手动方式触发。
Meta Major Compaction:一种特殊的 Compaction 类型,将某个指定时间点之前的数据合成一个 Meta Major SSTable,其数据格式与 Major SSTable 一样,不包含多版本数据和未提交事务数据。由后台调度线程触发,不可手动触发。
转储与合并
转储包含两个过程:Mini Compaction 和 Minor Compaction。当 MemTable 的大小超过一定的阈值时,需要将 MemTable 中的数据转存到 Mini SSTable 中以释放内存,该过程称为 Mini Compaction。随着用户数据的写入,Mini SSTable 的数量越来越多,当 Mini SSTable 的数量超过一定的阈值时,后台会自动触发 Minor Compaction。转储(Mini Compaction)会生成新的 Mini SSTable。当转储(Mini Compaction)的次数超过一定阈值时,或者在每天的业务低峰期,系统会将基线 SSTable(Major SSTable)与之后转储的增量 SSTable(Mini/Minor SSTable)合并为一个新的 Major SSTable,该过程称为 合并。