---
title: OceanBase 数据库的分层转储功能-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OceanBase 数据库的分层转储功能相关的常见问题和使用技巧，帮助您快速解决OceanBase 数据库的分层转储功能的难题。
---
切换语言

- 简体中文
- English

划线反馈

# OceanBase 数据库的分层转储功能

更新时间：2026-06-12 08:51

适用版本： V2.2.x、V3.1.x、V3.2.x 内容类型：Troubleshoot  

本文主要介绍 OceanBase 数据库的分层转储功能。

## 适用版本

OceanBase 数据库 V2.2.30、V2.2.50，OceanBase 数据库 V2.2.60 及后续的版本。

## 分层转储简介

不使用分层转储时，OceanBase 数据库在同一时刻只会维护一个转储 SSTable，当 MemTable 需要进行转储时，会将 MemTable 中的数据与转储 SSTable 中的数据进行归并。随着转储次数不断增多，转储 SSTable 的大小也越来越大，而一次转储需要操作的数据量也越来越多，导致转储速度越来越慢，进而可能导致 MemTable 内存不足 。

因此 OceanBase 数据库引入了分层转储的结构，在原有的基础上增加了 L0 层。

- L0 层（Mini SSTable）：

     - 被冻结的 MemTable 会直接 flush 为 Mini SSTable。
     - OceanBase 数据库内部可以同时存在多个 Mini SSTable。
     - L0 层内部支持下压，但必须选择 version 值域连续的 SSTable。
 - L1 层（Minor SSTable）：

     - 大多数情况下仅有一个 Minor SSTable。
     - 每次下压都会在 L1 层生成新的 Minor SSTable，代替原有的 Minor SSTable。
 - L2 层（Major SSTable）：

     - 基线数据，在合并时产生。
     - 一般情况下仅有一个。

分层转储的概念图如下所示。

![分层转储 ](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/6606401161/p226263.png)

## 分层转储相关的配置项

- `minor_compact_trigger` 参数用于控制分层转储触发 Mini SSTable 向 Minor SSTable 下压的阈值，当该层 Mini SSTable 总数达到该参数设定的阈值时，所有 Mini SSTable 都会被下压到下一层，组成新的 Minor SSTable。

  `minor_compact_trigger` 默认为 2，表示 Mini SSTable 数量达到 2 时，会下压到下一层组成新的 Minor SSTable。该参数的取值范围为 0 ~ 16。将 `minor_compact_trigger` 设置为 0 时，OceanBase 数据库仍会进行分层转储，此时 MemTable 仍然 dump 为 Mini SSTable，但后续会立即调度下压合并到 L1 层。
 - `__minor_compaction_amplification_factor` 控制 L0 层内部多个Mini SSTable转储的时机，默认为 25。

  当所有Mini SSTable的总行数达到 Minor SSTable 的写放大系数比例后，才会触发 L1 层转储，否则触发 L0 层转储。当 L1 层不存在Minor SSTable 时，所有Mini SSTable行数到指定阈值（由 minor_compact_trigger 控制）后才会触发 L1 层转储。
 - `major_compact_trigger`用于控制 L1 层到 L2 层进行转储的时机，当前与 minor_freeze_times 的含义相同，默认为 5。当 MemTable Dump Flush 的次数达到该配置项设置阈值时触发 L2 层转储。

有关以上配置项的详细信息，请参见 OceanBase 数据库《参考指南》中的 [系统配置项](https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000946151) 章节。

## 分层转储的代价

- 对于 LSM-Tree 架构，分层转储意味着更长的链路，在数据扫描时需要扫描 SSTable、Mini SSTable、Minor SSTable 与 SSTable，扫描链路更长，加剧了读放大和空间放大。
 - 数据会存在于多个 Mini SSTable 中，造成数据冗余。

Previous

[不同节点的 SStable 为什么大小不一致，同时存在三个相同的 SStable](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003867165)

Next

[什么是转储预热](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000209914) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
