Giant
            
          
          
            
          
              
              
          #1
          
         
        
          【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】 4.3.3
【问题描述】自适应合并和major合并的疑问
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
发现自适应合并是分区级别的,在考试obcp 4 材料中有个 sstable的关系

疑问1: 打开自适应合并后是不是就没有major sstable了。仅仅剩下medium sstable了
疑问2:自适应合并是分区级别的。  major 合并是租户级别的 。是不是合并降级了?
         
        
          
        
           
           
           2 个赞
         
         
            
            
          
       
      
        
          
          
            论坛小助手
            
          
          
          
              
              
          #4
          
         
        
          根据文档库中的信息,我将针对您的疑问进行解答。
疑问1:打开自适应合并后是不是就没有major sstable了。仅仅剩下medium sstable了
回答:
- 
自适应合并与Major合并的关系
- 自适应合并不是完全替代 Major 合并(即租户级合并),而是补充和优化了分区级别的合并策略。根据文档片段1的描述,自适应合并实际调度的是分区级合并(
MEDIUM_MERGE),它会适时地对有需求的分区发起合并任务。 
- 打开自适应合并后,系统仍然会执行 Major 合并(
MAJOR_MERGE),但其频率可能会减少,因为自适应合并已经在一定程度上缓解了数据碎片化的问题。因此,并不是说打开了自适应合并就完全没有 Major SSTable 了,只是 Major 合并的触发条件和频率可能有所变化。 
 
- 
SSTable 类型
- 
MINI_MERGE:将 MemTable 转变成 Mini SSTable。 
- 
MINOR_MERGE:多个 Mini SSTable 或多个 Mini SSTable 与 Minor SSTable 合成一个 Minor SSTable。 
- 
MEDIUM_MERGE:分区级合并,生成 Medium SSTable。 
- 
MAJOR_MERGE:租户级合并,生成 Major SSTable。 
 
所以,打开自适应合并后,系统中依然会有 Major SSTable,只是其生成的频率可能会降低。
疑问2:自适应合并是分区级别的。 major 合并是租户级别的 。是不是合并降级了?
回答:
- 
合并级别
- 自适应合并确实是在分区级别进行的(
MEDIUM_MERGE),而 Major 合并是在租户级别进行的(MAJOR_MERGE)。但这并不意味着合并“降级”了。 
- 自适应合并的主要目的是在更细粒度的层面上优化数据合并,以应对频繁的 DML 操作、查询效率低等问题。它并不会取代 Major 合并的功能,而是作为一种补充机制来提高整体性能。
 
- Major 合并在租户级别进行,可以确保整个租户的数据一致性,并且提供了一个天然的数据校验点,这对于数据完整性和一致性非常重要。
 
 
- 
合并效果
- 自适应合并和 Major 合并各有侧重:
- 
自适应合并:更灵活,能够及时响应特定分区的数据变化,提升局部查询性能。
 
- 
Major 合并:全局性更强,确保租户内所有分区的一致性,定期整合增量数据,提升整体读取性能。
 
 
 
因此,自适应合并和 Major 合并并不是简单的“升级”或“降级”关系,而是相辅相成的两种合并策略,共同作用于不同的场景和需求。
希望以上解答能帮助您更好地理解自适应合并和 Major 合并的区别和作用。如果您还有其他问题,欢迎继续提问!
具体信息可参考以下文档:
- 手动触发合并
 
- OceanBase 术语
 
- GV$OB_COMPACTION_SUGGESTIONS
 
- V$OB_COMPACTION_SUGGESTIONS
 
- V$OB_COMPACTION_DIAGNOSE_INFO
 
         
        
        
           
           
           3 个赞
         
         
            
            
          
       
      
        
          
          
            Giant
            
          
          
          
              
              
          #5
          
         
        
          Medium SSTable 怎么样和major sstable 进行融合成一个文件的?
         
        
        
           
           
           2 个赞
         
         
            
            
          
       
      
        
          
          
            论坛小助手
            
          
          
          
              
              
          #7
          
         
        
          根据文档库中的信息,我将详细解答关于 Medium SSTable 和 Major SSTable 如何融合的问题。
Medium SSTable 和 Major SSTable 的融合过程
1. 合并的触发条件
- 
自适应合并(MEDIUM_MERGE):这是分区级别的合并,通常由系统根据写入状态或用户设置自动触发。它会将多个 Mini SSTable 或者 Mini SSTable 与 Minor SSTable 合并成一个 Medium SSTable。
 
- 
Major 合并(MAJOR_MERGE):这是租户级别的合并,通常在每天凌晨 2 点左右进行,或者由管理员手动触发。它会将当前大版本的 SSTable 和 MemTable 与前一个大版本的全量静态数据进行合并,生成新的全量数据。
 
2. 融合的具体过程
当 Major 合并被触发时,系统会执行以下步骤:
- 
选择快照点:
- Major 合并会选取一个全局的快照点,确保租户内所有分区的数据都基于这个统一的快照点进行合并。
 
 
- 
读取和合并数据:
- 
读取数据:系统会读取当前的 Medium SSTable 和其他相关的 SSTable(包括 Mini 和 Minor SSTable),以及 MemTable 中的数据。
 
- 
合并数据:将这些数据按照键值顺序进行归并,消除重复项,并生成新的 SSTable 文件。这个过程中,系统会对数据进行两层压缩:
- 第一层是数据库内部基于语义的编码压缩。
 
- 第二层是基于用户指定压缩算法(如 lz4)的通用压缩。
 
 
 
- 
生成新的 Major SSTable:
- 新生成的 SSTable 文件将包含所有已合并的数据,并且会替换旧的 SSTable 文件。这一步骤确保了数据的一致性和完整性。
 
 
- 
更新元数据:
- 更新相关的元数据表(如 
CDB_OB_MAJOR_COMPACTION),以反映最新的合并状态。 
 
3. 验证合并完成
总结
Medium SSTable 和 Major SSTable 的融合并不是直接将两个文件简单地合并在一起,而是一个复杂的过程,涉及读取、排序、去重、压缩等多个步骤。最终生成的新 SSTable 文件会包含所有已合并的数据,并且会替换旧的 SSTable 文件,确保数据的一致性和高效性。
希望以上解答能帮助您更好地理解 Medium SSTable 和 Major SSTable 的融合过程。如果您还有其他问题,欢迎继续提问!
检索到的文档如下:
- 转储
 
- 体验 Operational OLAP
 
- 发现磁盘的静默错误
 
- 数据库对象存储
 
- OceanBase 数据库性能的影响因素
 
- OceanBase 术语
 
- 集群管理 FAQ
 
- 表存储
 
- 大对象和文本类型概述
 
- OceanBase AP 核心特性
 
         
        
        
           
           
           2 个赞
         
         
            
            
          
       
      
        
          
          
            辞霜
            
          
          
          
              
              
          #10
          
         
        
          大概意思就是,原本的mini和minor sstable最终合并后变为major sstable而medium sstable即为最终形态了
         
        
        
           
           
           1 个赞
         
         
            
            
          
       
      
        
          
          
            Giant
            
          
          
            
          
              
              
          #11
          
         
        
          按道理说应该变成major sstable才对吧。
major 会把medium sstable  , mini sstable ,minor sstable  , memtable都进行合并。
哪里写的有问题吗 ?
         
        
        
           
           
           1 个赞
         
         
            
            
          
       
      
        
          
          
            辞霜
            
          
          
          
              
              
          #12
          
         
        
          我上面描述有点问题,自适应合并生成的medium sstable等同于合并生成的major sstable,不是任何情况下都不变了,意思是当前自适应合并medium sstable即为最终样子
         
        
        
           
           
           1 个赞
         
         
            
            
          
       
      
        
          
          
            Giant
            
          
          
          
              
              
          #13
          
         
        
          
medium sstable即为最终样子。 如果下次major  还会把medium sstable 合并成 major sstable 不? 如果关闭了自适应
         
        
        
           
           
           
         
         
            
            
          
       
      
        
          
          
            辞霜
            
          
          
          
              
              
          #14
          
         
        
          major合并会将medium sstable 合并成 major sstable
         
        
        
           
           
           1 个赞