【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
当Minor SSTable达到阈值后转化为Major SSTable这个操作算是转储的L2层还是合并?
我理解的每日合并是将Minor SSTable和Mini SSTable都合并为Major SSTable,那当L1层的Minor SSTable的数量达到一定阈值之后转化成的Major SSTable也是基线数据吗?
论坛小助手
#3
根据文档库中的信息,可以对您的问题进行如下解答:
-
关于 Minor SSTable 转化为 Major SSTable 的操作性质
根据文档片段 8 和片段 9 的内容,Minor SSTable 达到阈值后转化为 Major SSTable 的操作属于 合并(Major Compaction),而不是转储的 L2 层。
-
转储(Dump) 是指将 MemTable 中的数据刷盘生成 SSTable 的过程,包括生成 Mini SSTable 和 Minor SSTable 的动作。
-
合并(Merge) 是指将基线数据(L2 层 Major SSTable)与增量数据(Mini SSTable 和 Minor SSTable)合并成新的 Major SSTable 的过程。
因此,当 L1 层的 Minor SSTable 数量达到一定阈值后,触发的动作是 合并,生成新的 Major SSTable。
-
关于基线数据的定义
根据文档片段 1 和片段 9 的内容,Major SSTable 是基线数据,通常由每日合并生成。在合并过程中,系统会选取一个全局快照点,基于该快照点生成新的 Major SSTable。因此,当 L1 层的 Minor SSTable 达到阈值后转化成的 Major SSTable 同样是基线数据。
-
每日合并的作用
每日合并的主要目的是定期整合增量数据,提升读取性能,并提供一个天然的数据校验点。通过全局一致的快照点,OceanBase 数据库能够在内部对多副本以及主表索引表进行多维度的物理数据校验。
综上所述:
- 当 L1 层的 Minor SSTable 达到阈值后转化为 Major SSTable 的操作属于 合并(Major Compaction),而非转储的 L2 层。
- 这个过程中生成的 Major SSTable 是基线数据。
如果您还有其他疑问,请进一步补充相关信息,我们将尽力为您解答!
检索到的文档如下:
- 转储
- OceanBase 术语
- 转储和合并概述
- 存储架构概述
- 转储管理概述
- minor_compact_trigger
意思就是L1的Minor SSTable 到L2 层的 Major SSTable这个也是转储的一部分吗?合并是特指的每日合并对吗?
论坛小助手
#7
根据文档库中的信息,可以对您的问题进行如下解答:
-
关于 L1 的 Minor SSTable 到 L2 层的 Major SSTable 是否属于转储的一部分
根据文档片段 4 和片段 10 的内容,L1 的 Minor SSTable 到 L2 层的 Major SSTable 的转化过程并不属于转储的一部分,而是 合并(Major Compaction) 的一部分。
-
转储(Dump) 主要负责将 MemTable 中的数据刷盘生成 SSTable,包括生成 Mini SSTable(L0 层)和 Minor SSTable(L1 层)。
-
合并(Merge) 是指将基线数据(L2 层 Major SSTable)与增量数据(Mini SSTable 和 Minor SSTable)合并成新的 Major SSTable 的过程。
因此,从 L1 层的 Minor SSTable 到 L2 层的 Major SSTable 的转化属于 合并,而不是转储。
-
关于合并是否特指全局合并
根据文档片段 4 和片段 7 的内容,合并(Major Compaction) 并不完全等同于全局合并,但全局合并是合并的一种特殊形式。
- 合并可以由租户的 RS(Root Service)根据写入状态或用户设置发起调度,支持租户级别和分区级别的手动触发。
- 全局合并通常是指每日合并,系统会在业务低峰期(如凌晨 2 点左右)对整个集群的数据进行一次整体的 Major Compaction 动作。这种全局合并会选取一个全局快照点,基于该快照点生成新的 Major SSTable,并提供一个天然的数据校验点。
综上所述:
- 从 L1 层的 Minor SSTable 到 L2 层的 Major SSTable 的转化属于 合并(Major Compaction),而不是转储的一部分。
- 合并并不完全等同于全局合并,但全局合并是合并的一种特殊形式,通常指每日合并。
如果您还有其他疑问,请进一步补充相关信息,我们将尽力为您解答!
详情请参考:
- 转储
- OceanBase 术语
- 存储架构概述
- MAJOR 和 MINOR
- 转储和合并概述
(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)
甯空
#9
mini,minor都是"小转储"
major通常每天一次"大合并"
大概理解什么意思了 那每日合并时当天的所有mini,minor,major进行合并还是以前所有的基线数据和mini,minor进行合并?
淇铭
#12
将MemTable 中的数据转存到SSTable 中的过程叫转储,MEMTABLE 冻结 写入磁盘生成Mini SSTable,这个叫 转储,MEMTABLE 不会直接生成minorSSTable,多个Mini SSTable会进行合并生成一个 minor sstable,同时 两个minor sstable也可以合并成一个大的 minor sstable,最终的形态是minor sstable和基线的SSTABLE 合并成一个新的 基线的SSTABLE
1 个赞
再问一下 转储不是要经过一些过程吗 那冻结的内存实在所有的过程全部结束后释放还是在memtable强刷成minisstble就可以释放了
淇铭
#15
● 将 MemTable 数据做小版本冻结(Minor Freeze)后写到磁盘上单独的转储文件里,不与SSTable数据做合并;
● 转储文件写完之后,冻结的 MemTable 内存被清空并重新使用;
● 每次转储会将 MemTable 数据与前一次转储的数据合并(Merge),转储文件最终会合并到 SSTable 中。