首批通过分布式安全可靠测评,为关键业务系统打造
什么是并行合并
更新时间:2026-06-15 09:16
本文主要介绍什么是并行合并以及并行合并的并行度是如何计算的。
适用版本
OceanBase 数据库所有版本。
并行 compaction 是什么
将一个 compaction 任务按照 key_range 拆成若干的子任务,将任务交给不同的线程执行,加快 compaction 的速度。
并行合并是默认开启的吗?
并行合并是默认开启的。
并行转储是由租户配置项 _enable_parallel_minor_merge 设置(不建议打开)。
并行 compaction 的并行度是如何计算的?
通过该表的宏块数、schema 中的 tablet_size、合并使用的最大线程数等因素来计算的。
一个表的一次合并在 3 个 zone 的并行度/划分的 key_range 是一致的。不同表的并行度可能会不一样。
并行合并的 bad case
并行合并的拆分是按照 Major SSTable 来进行拆分的。
- 当 Major SSTable 的数据量很小,增量数据很多的时候,并行合并的 range 拆分会将增量数据都划分到同一个 compaction 任务中,等价于单线程执行增量数据的合并。
- 如果增量数据集中在某一个子任务的 key_range 区间内,会导致这个子任务合并时间很长,成为长尾。比如主键递增导入。