在 OceanBase 4.x 版本中,关于租户级别的合并(Major Compaction)与转储(Minor Compaction)机制,下列说法错误的是哪一项?
A. 转储是将内存中的 MemTable 冻结并转储为增量 SSTable,不会触发全量数据的重写,对业务性能影响更小
B. 每日合并的触发时机由租户级参数 major_freeze_duty_time 控制,默认在每日凌晨 2 点触发
C. 合并过程中会对数据进行校验、压缩、删除标记清理,同时会生成新的基线数据,合并完成后旧的基线 SSTable 会被立即回收
D. 当租户的 MemTable 内存占用达到租户内存上限的一定比例时,会自动触发转储操作,避免内存溢出
E. 转储可以分为自动转储和手动转储,手动转储可以通过 ALTER SYSTEM MINOR FREEZE 命令针对指定租户执行
1 个赞
说法错误的是 C 。
1 个赞
选d,是与menstore内存占比
根据您提供的问题选项和描述,我们可以逐一分析:
A. 转储是将内存中的 MemTable 冻结并转储为增量 SSTable,不会触发全量数据的重写,对业务性能影响更小
- 这个描述是正确的。转储主要是将内存中的修改冻结并持久化到磁盘,确实不会触发全量数据的重写,因此对业务性能的影响相对较小。
B. 每日合并的触发时机由租户级参数 major_freeze_duty_time 控制,默认在每日凌晨 2 点触发
- 这个描述也是正确的。
major_freeze_duty_time参数确实控制了每日合并的触发时间,默认设置是在每天的凌晨 2 点。
C. 合并过程中会对数据进行校验、压缩、删除标记清理,同时会生成新的基线数据,合并完成后旧的基线 SSTable 会被立即回收
- 这个描述存在一定的问题。在合并过程中,确实会对数据进行校验、压缩、删除标记清理,并生成新的基线数据。但是,旧的基线 SSTable 不会被立即回收,而是会在新生成的数据验证无误后才会被删除。这是为了确保数据的一致性和可靠性。
D. 当租户的 MemTable 内存占用达到租户内存上限的一定比例时,会自动触发转储操作,避免内存溢出
- 这个描述是正确的。当 MemTable 内存占用达到一定比例时,会触发自动转储操作,以防止内存溢出。
E. 转储可以分为自动转储和手动转储,手动转储可以通过 ALTER SYSTEM MINOR FREEZE 命令针对指定租户执行
- 这个描述也是正确的。转储可以分为自动转储和手动转储,手动转储可以通过
ALTER SYSTEM MINOR FREEZE命令执行。
综上所述,选项 C 的描述存在错误,因为旧的基线 SSTable 不会被立即回收,而是在新生成的数据验证无误后才会被删除。因此,正确答案是 C。
具体信息可参考以下文档:
1 个赞