关于 OceanBase 中合并(Major Compaction)与转储(Minor Compaction)的触发机制,以下描述正确的是?


A. 转储由租户内存使用率阈值 freeze_trigger_percentage 触发,而合并只能由运维人员手动执行 ALTER SYSTEM MAJOR FREEZE 触发,系统不会自动触发合并。

B. 转储和合并都会释放已删除数据占用的物理存储空间,二者的区别仅在于转储只处理当前活跃的 MemTable,而合并处理所有层的 SSTable。

C. 租户级别的合并可以通过 ALTER SYSTEM MAJOR FREEZE TENANT = xxx 触发,系统也会根据配置的合并周期(如每日凌晨)自动触发全局合并。

D. 当转储次数达到 minor_compact_trigger 阈值时,系统会自动触发一次合并,将多个 SSTable 合并为一个基线 SSTable,以减少读放大。

3 个赞

解析
OceanBase 的合并支持租户级独立调度和全局自动调度两种模式。用户可以通过 ALTER SYSTEM MAJOR FREEZE TENANT = xxx 对指定租户手动触发合并;同时系统也支持配置周期性合并策略(如每日凌晨自动执行全局合并),用于定期回收多版本数据和生成新的基线 SSTable。

  • A 错误 :合并支持系统自动触发 (如周期性合并策略),并非只能手动执行。
  • B 错误 :转储不回收已删除数据 的物理存储空间,仅将 MemTable 持久化为 SSTable;合并才会真正回收多版本冗余数据并释放空间。
  • C 正确 :租户级合并可通过命令触发,系统也支持自动周期性合并。
  • D 错误 :转储次数达到 minor_compact_trigger 阈值时触发的是转储间的合并(Minor Merge) ,仍属于转储范畴,不会生成基线 SSTable。生成基线 SSTable 是合并(Major Compaction)的职责。
4 个赞

正确答案:C

4 个赞

正确答案是:C

详细解析:

  • A 错误 :合并(Major Compaction)不仅可以由运维人员手动触发,系统也会自动触发。参考材料指出,合并有三种触发方式:定时触发(默认每天凌晨2点)、手工触发(ALTER SYSTEM MAJOR FREEZE )以及自动触发(当 MemTable 使用量达到阈值且转储次数达到 minor_freeze_timesmajor_compact_trigger 设置的上限时,会直接进行合并)。
  • B 错误 :转储(Minor/Mini Compaction)并不清理已删除的数据。参考材料明确指出,Mini Compaction 和 Minor Compaction “不产生全局快照,不回收多版本数据”;而 Major Compaction 才会“产生租户级的全局快照,回收多版本数据”。
  • C 正确 :合并支持手动触发和定时自动触发。参考材料提到,可以通过 ALTER SYSTEM MAJOR FREEZE 手动触发合并,并且默认情况下会在每天凌晨2点做定时合并(通过 major_freeze_duty_time 配置)。
  • D 错误 :当转储次数达到阈值时触发的是合并(Major Compaction) ,而不是将多个 SSTable 合并为一个基线 SSTable 的操作。将多个 Mini SSTable 合并成一个 Minor SSTable 的操作属于转储(Minor Compaction) ,其触发条件由 minor_compact_trigger 控制。合并(Major Compaction)才会将所有的动静态数据归并,生成一个全新的基线数据 Major SSTable。
2 个赞

C. 租户级别的合并可以通过 ALTER SYSTEM MAJOR FREEZE TENANT = xxx 触发,系统也会根据配置的合并周期(如每日凌晨)自动触发全局合并。

3 个赞

加油加油

2 个赞

very good

3 个赞

so good

1 个赞

不错不错

1 个赞