本节仅介绍 zone_merge_concurrency 配置项的配置建议方法,具体配置请参考 OceanBase Reference Guide文档。
在开启轮转合并(enable_merge_by_turn = true)的情况下,轮转合并的策略会配合 zone_merge_concurrency 来进行调度。
RS在调度合并的时候满足1个规则:相同 Region 下面 Zone类型相同并且有相同副本的 Zone 不会一起合并,同时优先调度合并时间较长的 Zone 开始合并;具体实现根据用户设置的zone_merge_concurrency
的值,RS采用两种不同的策略。
- 当
zone_merge_concurrency
= 0时
首先,RS 按照上一轮合并时间长短进行排序, RS 遵守同一个 Region 下面 Zone 类型相同并且有相同副本的Zone不一起合并的准则,优先从合并时间长的 Zone 开始调度,并且不对并发度进行控制,只要两个 Zone 不在同一个 Region下,或者没有相同的副本就可以将这个两个 Zone 的合并并发起来;最好的情况下,所有 Zone 都不在一个Region下,那么只要一轮调度所有的 Zone 都会开始合并; 这个场景和V1.4其他版本的实现是一样的。
- 当
zone_merge_concurrency
> 0时
首先,RS 根据上一轮合并的合并时长对 Zone 进行排序,优先从合并时间长的 Zone 开始检查,选择与当前正在合并的 Zone 不在同一个 Region 下的 Zone 或者在同一个 Region 但是 Zone 类型不一致或者没有相同副本的 Zone 进行决策,如果没有超过最大并发度的话,就可以调度该 Zone 进行合并;如果等于最大并发度的话,则停止本地检查调度过程。