OceanBase
  • 产品
  • 解决方案
  • 客户
  • 合作伙伴
  • 资源与服务
  • 文档
  • 社区
云控制台登录 / 注册
  • 免费试用
OceanBase AI 数据平台

基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。

一体化能力

TP 事务处理

关键业务稳定运行,保障数据零丢失

AP 实时分析

事务分析一体,驱动智能决策与运营

AI 现代负载

统一多模态数据,支撑生产级应用

关键产品
OceanBase 分布式数据库

首批通过安全可靠测评,面向关键业务

OceanBase 集中式数据库

集中式架构,兼具性能与成本优势

OceanBase AI 数据库

面向 AI 应用与 Agent 的多模数据库

OceanBase AI 湖库

湖库一体的 AI 多模态数据系统

OceanBase DataPilot

企业级 AI 数据分析 Agent

OceanBase Agentbase

企业级 Agent 后端基础设施

OceanBase OAgent

数据库 AI 运维 Agent

OB Cloud

一体化云数据库,提供多云一致体验

OceanBase 数据库一体机

软硬一体,极致性能与高可靠性保障

OceanBase AI 一体机

开箱即用的 AI 数据库一体机

OMA 迁移评估工具

全链路数据库迁移评估

OMS 数据迁移工具

一站式数据传输与同步

OCP 运维管理工具

数据库全生命周期管理

ODC 开发者工具

数据库开发与管控协同

OAS 自治服务工具

数据库智能诊断与自治

通用场景
全场景业务系统 OLTP
实时分析混合负载
异地多活
多基础设施部署
一站式传统数据库升级
混合云部署
一库多芯软硬件混合部署
分布式数据库单机部署
大存储类数据库降本
冷数据归档降本
多实例资源整合
分库分表一体化升级
高并发场景
数据中台
行业解决方案
国有大行和股份制银行核心系统解决方案
区域性银行核心系统解决方案
寿险核心系统解决方案
产险核心系统解决方案
资管交易类系统解决方案
资管 TA 清算类系统解决方案
运营商核心系统解决方案
人社核心系统解决方案
电力核心系统解决方案
行业专区
银行专区

助力银行完成各类核心业务系统升级

保险专区

寿险、产险核心系统升级的更佳选择

零售专区

助力200+零售行业客户规模化落地

DB 大咖说
OceanBase客户-爱奇艺爱奇艺

百亿级卡券业务的“单库双擎”架构升级

OceanBase客户-四川银行四川银行

800个测试用例选定分布式数据库

OceanBase客户-太平洋保险太平洋保险

先难后易,核心系统数据库升级复盘

行业案例
OceanBase客户-交通银行交通银行

核心数据库的“分布式革命”

OceanBase客户-中国移动中国移动

B域核心CRM&BOSS近乎零改造分布式升级

OceanBase客户-理想理想

打造领先的智能制造系统和自动驾驶体验

演讲实录
OceanBase客户-中国联通中国联通

集团应用分布式数据库覆盖B/O/M域

OceanBase客户-国泰海通国泰海通

智能推送系统稳定支撑单日亿级消息处理量

OceanBase客户-中国联合航空中国联合航空

中国首款机票盲盒背后的数据库力量

用户实践
OceanBase客户-北京银行北京银行

最快速度完成40余套系统国产数据库升级

OceanBase客户-VIVOVIVO

替换 MySQL 分库分表,探索成本效益最优

OceanBase客户-滴滴滴滴

数据库大规模运维体系建设及落地实践

合作伙伴
合作伙伴类型
联合解决方案
产业生态伙伴
经销商伙伴
技术服务伙伴
培训认证伙伴
生态联合解决方案
神州信息 x OceanBase 银行核心系统
长亮科技 x OceanBase 新核心系统
中电金信 x OceanBase 金融分布式核心系统
天阳科技 x OceanBase 贷记卡方案
易诚互动 x OceanBase 手机银行方案
恒生 x OceanBase UF3.0/O45/TA/估值方案
商业发行版
云树®数据库软件 ActionDB
服务
支持与服务
提交工单
软件下载
OceanBase 企业版
OceanBase 社区版
OB Cloud
学习
培训与认证
在线课堂
在线体验
开发者
开发者中心
资料
行业报告与白皮书
官方博客
年度发布会资料
开发者大会资料
oceanbase白皮书

金融核心系统数据库升级路径与场景实践

oceanbase白皮书

人社关键业务数据库一体化升级实践

产品文档
oceanbaseOceanBase 数据库
数据库一体机
oceanbaseOceanBase AI 数据库
工具与组件
oceanbaseOB Cloud 云数据库
驱动和中间件
快速上手
OceanBase 数据库
OB Cloud 云数据库
知识库
汇聚常见产品使用问题案例
在线体验

Demo与实验,感受 OceanBase 的核心能力与应用场景

OceanBase 最佳实践
了解 OceanBase 分布式数据库的架构与系统原理
技术博客

技术解析 | 用户实践 | 社区月报

在线课堂

电子书 |视频课程|在线培训

Developer Hub
应用开发Demo | 数据开发与集成工具
问答论坛

快速答疑 | 常见问题 | 技术交流

社区活动

Meetup | 技术公开课

GitHub

查看源码 | 贡献代码 | 建议反馈

加入社区

社区组织 | 社区用户贡献 |开发者贡献

进入社区首页
oceanbase数据库大赛

第六届OceanBase数据库大赛

oceanbase免费课程

《Easy Data x AI》:面向所有 AI 爱好者的 Data 与 AI 基础知识入门教程

切换语言
  • 中文站 - 简体中文
  • International - English
  • 日本站 - 日本語
文档反馈
  1. 文档中心
  2. OceanBase 数据库企业版
  3. 分布式版
  4. V2.2.77
  5. OceanBase 数据库概览
  6. 存储架构
  7. 转储和合并
分布式版-V2.2.77企业版LTS
  • V2.2.77 文档更新记录
  • What's New
  • 了解 OceanBase 数据库
  • 数据库概览
    • 数据库介绍
    • 数据分布
    • 数据模型
    • 高可用
    • 事务管理
    • 存储架构
      • 概述
      • LSM Tree 架构
      • 内存表 MemTable
      • 块存储 SSTable
      • 转储和合并
      • 缓存机制
      • 读写流程
      • DDL
    • SQL 引擎
    • 客户端访问
    • 备份与恢复
    • 主备库
  • 部署 OceanBase 数据库
  • 快速入门
  • 管理员指南
  • 开发者指南(MySQL 模式)
  • 开发者指南(Oracle 模式)
  • PL 参考(Oracle 模式)
  • SQL 参考(MySQL 模式)
  • SQL 参考(Oracle 模式)
  • SQL 调优指南
  • 参考指南(MySQL 模式)
  • 参考指南(Oracle 模式)
  • 升级指南
  • 常见问题
  • 版本发布记录
  • 术语
  1. 文档中心
  2. OceanBase 数据库企业版
  3. 分布式版
  4. V2.2.77
  5. OceanBase 数据库概览
  6. 存储架构
  7. 转储和合并

转储和合并

更新时间:2025-08-08 15:51:46

编组分享

转储

转储包含三个过程:Mini Compaction、Mini Minor Compaction 和 Minor Compaction。

Mini Compaction

当 MemTable 的大小超过一定的阈值时,需要将 MemTable 中的数据转存到 Mini SSTable 中以释放内存,该过程称为 Mini Compaction。

Mini Compaction 的核心就是释放内存和数据日志。内存中的 Frozen MemTable 通过 Mini Compaction 变成磁盘上的 Mini SSTable,是数据日志的一个 checkpoint。Mini Compaction 结束后,其对应的 Frozen MemTable 和 Log 可以被释放。

Mini Minor Compaction

随着用户数据的写入,Mini SSTable 的数量会逐渐增多,在查询时需要访问的 Mini SSTable 数量就会增多,会影响查询的性能。Mini Minor Compaction 就是将多个 Mini SSTable 合成一个 Mini SSTable,其主要目的是减少 Mini SSTable 的数量。

L0-L0

Minor Compaction

随着 Mini SSTable 的数量越来越多,当 Mini SSTable 的数量超过阈值时,后台会自动触发 Minor Compaction,将若干个 Mini SSTable 与 Minor SSTable 合成一个新的 Minor SSTable。

L0-L1

转储触发

转储有两种触发方式:自动触发与手动触发。

当一个租户的 MemTable 内存的使用量达到 memstore_limit_percentage * freeze_trigger_percentage 所限制使用的值时,就会自动触发冻结(转储的前置动作),然后系统内部会再调度转储。

您也通过以下的运维命令手动触发转储。

ALTER SYSTEM MINOR FREEZE [zone] | [server_list] | [tenant_list] | [replica]
 
tenant_list:
    TENANT [=] (tenant_name_list)
 
tenant_name_list:
    tenant_name [, tenant_name ...]
 
replica:
    PARTITION_ID [=] 'partition_idx%partition_count@table_id'
 
server_list:
    SERVER [=] ip_port_list

示例:

  • 集群级别转储

    obclient> ALTER SYSTEM MINOR FREEZE;
    
  • Server 级别转储

    obclient> ALTER SYSTEM MINOR FREEZE SERVER='10.10.10.1:2882';
    
  • 租户级别转储

    obclient> ALTER SYSTEM MINOR FREEZE TENANT=('prod_tenant');
    
  • Replica 级别转储

    obclient> ALTER SYSTEM MINOR FREEZE ALTER PARTITION_ID = '8%1@1099511627933';
    

需要注意的是,尽管允许只针对单个分区手动触发 Minor Freeze,但由于多个不同的分区可能共用相同的内存块,因此对单个分区的 Minor Freeze 可能并不能有效地释放内存,而针对租户的 Minor Freeze 可以有效地释放对应租户 MemTable 的内存。

合并

合并操作(Major Compaction)是将动静态数据做归并,会比较费时。当转储产生的增量数据积累到一定程度时,通过 Major Freeze 实现大版本的合并。

转储和合并的最大区别在于,合并是集群上所有的分区在一个统一的快照点和全局静态数据进行合并的行为,是一个全局的操作,最终形成一个全局快照。

转储和合并的对比如下表所示:

转储(Mini Compaction) 转储(Mini Minor Compaction) 转储(Minor Compaction) 合并(Major Compaction)
分区或租户级别,只是 MemTable 的物化 分区级别 分区级别 全局级别,产生一个全局快照。
每个 OBServer 节点的每个租户独立决定自己 MemTable 的冻结操作,主备分区不保持一致 每个分区根据当前 Mini SSTable 的数量来执行分区内的 Mini Minor Compaction 每个分区根据当前 Minor SSTable 的数量来执行分区内的 Minor Compaction 全局分区一起做 MemTable 的冻结操作,要求主备 Partition 保持一致,在合并时会对数据进行一致性校验。
可能包含多个不同版本的数据行 可能包含多个不同版本的数据行 可能包含多个不同版本的数据行 只包含快照点的版本行
将一个或多个 MemTable 持久化为 Mini SSTable 将多个 Mini SSTable 合成一个 Mini SSTable。仅包含增量数据,最终被删除的行需要特殊标记。 将多个 Mini SSTable 与一个 Minor SSTable 合并产生一个新的 Minor SSTable,仅包含增量数据,最终被删除的行需要特殊标记。 合并会把当前大版本的 SSTable 和 MemTable 与前一个大版本的全量静态数据进行合并,产生新的全量数据。

合并有很多种不同的方式,具体的描述如下。

全量合并

全量合并是 OceanBase 数据库的一种合并算法,和 HBase 与 Rocksdb 的 Major Compaction 过程是类似的。顾名思义,在全量合并过程中,会把当前的基线数据都读取出来,和增量数据合并后,再写到磁盘上去作为新的基线数据。在这个过程中,会把所有数据都重写一遍。全量合并会极大的耗费磁盘 IO 和空间,如非必要或者 DBA 强制指定,OceanBase 数据库一般不会主动做全量合并。

OceanBase 数据库发起的全量合并一般发生在列类型修改等 DDL 操作之后。DDL 变更是实时生效的,不阻塞读写,也不会影响到多副本间的 Paxos 同步,将对存储数据的变更延后到合并的时候来做,这时就需要将所有数据重写一遍。

增量合并

增量合并是相对于全量合并而言的概念,同样是 OceanBase 数据库的一种合并算法。大多数情况下,当需要进行合并时并不是所有的宏块都需要被修改,当一个宏块没有增量修改时,直接重用它,而不是重写它,这种方式称之为增量合并。相对于全量合并的把所有的宏块的重写一遍而言,增量合并只重写发生了修改的宏块。增量合并极大地减少了合并的工作量,也是 OceanBase 数据库目前默认的合并算法。

更进一步地,对于宏块内部的微块,很多情况下也并不是所有的微块都会被修改。当发现宏块有行被修改过时,在处理每一个微块时,会先判断这个微块是否有行被修改过,如果没有,只需要把这个微块的数据直接拷贝到新的宏块上,这样没被修改过的微块就省去了解析行、选择编码规则、对行进行编码以及计算列 Checksum 等操作。微块级增量合并进一步减少了合并的时间。

渐进合并

在执行某些 DDL 操作时,例如执行表的加列、减列、修改压缩算法等操作后,可能需要将数据重写一遍。OceanBase 数据库并不会立即对数据执行重写操作,而是将重写动作延迟到合并时进行。基于增量合并的方式,无法完成对未修改数据的重写,为此 OceanBase 数据库引入了"渐进合并",即把数据的重写分散到多次合并中去做,在一次合并中只进行部分数据的重写。

通过以下命令可以控制一张表的渐进轮次:

ALTER TABLE [table_name] SET progressive_merge_num=?

例如:

obclient> ALTER TABLE mytest SET progressive_merge_num=60;

将表 mytest 的渐进轮次设置为 60,当执行加列或减列操作后的 60 次合并过程中,每一次合并会重写 60 分之一的数据,在 60 轮合并过后,数据就被整体重写了一遍。

当未对表的 progressive_merge_num 进行设置时,其默认值为 0,目前语义为在执行需要重写数据的 DDL 操作之后,做渐进轮次为 100 的渐进合并。当表的 progressive_merge_num 被设置为 1 时,表示强制走全量合并。

轮转合并

一般来说合并会在业务低峰期进行,但并不是所有业务都有业务低峰期。在合并期间,会消耗比较多的 CPU 和 IO,此时如果有大量业务请求,势必会对业务造成影响。为了规避合并对业务的影响。借助 OceanBase 数据库的多副本分布式架构,引入了轮转合并的机制。

一般配置下,OceanBase 数据库会同时有 3 个数据副本,当一个数据副本在进行合并时,可以将这个副本上的查询流量切到其他没在合并的副本上面,这样业务的查询就不受每日合并的影响。等这个副本合并完成后,再将查询流量切回来,继续做其他副本的合并,这一机制称之为轮转合并。

为了避免流量切过去后,Cache 较冷造成的 RT 波动,在流量切换之前,OceanBase 数据库还会做 Cache 的预热,通过参数可以控制预热的时间。

合并触发

合并触发有三种触发方式:自动触发、定时触发与手动触发。

  • 当集群中任一租户的 Minor Freeze 次数超过阈值时,就会自动触发整个集群的合并。

  • 也可以通过设置参数来在每天的业务低峰期定时触发合并。

    obclient> ALTER SYSTEM SET major_freeze_duty_time = '02:00';
    
  • 也通过以下的运维命令手动触发合并。

    obclient> ALTER SYSTEM MAJOR FREEZE;
    

本文目录

转储Mini CompactionMini Minor CompactionMinor Compaction转储触发合并
有帮助
无帮助
反馈
AI

OceanBase

OceanBase 海扬数据库始创于 2010 年,是完全自主研发的数据库公司。2020年开始独立商业化运作,历经15年大规模核心场景验证,目前是中国数据库的领军企业之一。从分布式数据库到 AI 数据库,为企业提供安全、稳定、可扩展的数据底座,推动数据基础设施全面拥抱 AI 时代。

关于我们

关于 OceanBase最新动态资质荣誉客户专家委员会招贤纳士合作伙伴年度发布会开发者大会

资源与服务

支持与服务文档知识库软件与工具下载培训与认证在线体验数据库专题视频

社区

快速上手开发者中心博客活动学习问答GitHub

数据库百科

分布式数据库国产数据库OLTP 数据库OLAP 数据库HTAP 数据库数据库向量数据库向量检索

联系我们

服务热线:
400-109-0633
商务咨询
培训认证技术支持媒体合作
京公网安备11010802047223号京公网安备11010802047223号
京ICP备20024574号-1
合字B1.B2-20250395
网站服务协议隐私协议安全响应协议
OceanBase 版权所有 © 2026 基础资源和备案服务由阿里云提供