首批通过分布式安全可靠测评,为关键业务系统打造
常见的 OceanBase 数据库 compaction 参数
更新时间:2026-06-15 09:16
本文介绍常见的 OceanBase 数据库 compaction 参数。
merge_thread_count:合并工作线程数,当设置为 0 时使用默认值 10。此配置项在 OceanBase 数据库 V4.x 版本已废弃,使用配置项compaction_low_thread_score来设置低优先级 Compaction 的工作线程数。minor_freeze_times:指定多少次冻结后触发大版本合并。此配置项在 OceanBase 数据库 V4.x 版本已废弃,由租户级配置项major_compact_trigger来控制租户冻结多少次后触发合并。major_compact_trigger:minor_freeze_times的同义参数,未来慢慢替代minor_freeze_times。minor_compact_trigger:指定最大存在的 L0/L1 转储生成的 mini sstable 个数。当 partition 的转储 sstable 个数超过minor_compact_trigger后开始触发 L0 或者 L1 compaction;当设置为 0 时,转储生成的 mini sstable 会尽快合到 minor sstable 中。major_freeze_duty_time:每日合并定时时间。max_kept_major_version_number:存储保留合并大版本数。此配置项在 OceanBase 数据库 V4.x 版本已废弃。_enable_parallel_minor_merge:租户级并行转储配置项,设置时需要指定对应的租户。freeze_trigger_percentage:租户触发冻结的内存比例(memstore的使用比例),大多数情况下建议使用默认值,设置值小的话会加快转储/合并的频率,对于写入查询压力较大的场景建议设置的小一些,对于写入查询压力较小的场景可以设置的大一些。OceanBase 数据库 V3.2 及之前版本默认值为 70,OceanBase 数据库 V4.x 版本默认值为 20。memstore_limit_percentage:设置租户使用 memstore 的内存占其总可用内存的百分比,默认值 50。_minor_compaction_amplification_factor:L1 compaction 的写放大系数比例,当选择转储的 mini sstables 与 minor sstable 总行数比值超过该写放大系数时,选择将多个 mini 和 minor 合成一个 minor(minor merge),否则将多个 mini 合成一个 mini(mini minor merge),默认为 25。merge_stat_sampling_ratio:合并时统计信息采样率,当设置为 0 时则关闭统计信息采集。默认值为 100。此配置项在 OceanBase 数据库 V4.x 版本已废弃。builtin_db_data_verify_cycle:宏块巡检周期参数,当设置为 0 时关闭巡检,默认值 20。micro_block_merge_verify_level:微块校验等级设置(非研发环境不能使用)。- 0:表示不做校验。
- 1:表示验证编码算法,将读取编码后的微块以确保数据正确。
- 2:表示验证编码和压缩算法,除编码验证外,还将对压缩块进行解压缩以确保数据正确。
- 3:表示验证编码,压缩算法和丢失写保护。
_minor_compaction_interval:mini minor merge 或 minor merge 的延迟调度时间,默认为 0。此配置项在 OceanBase 数据库 V4.x 版本未使用。minor_merge_concurrency:mini minor merge / minor merge 工作线程数,当设置为 0 时使用默认值 10。此配置项在 OceanBase 数据库 V4.x 版本已废弃。_mini_merge_concurrency: mini merge(转储)工作线程数,默认为 5。此配置项在 OceanBase 数据库 V4.x 版本已废弃。minor_warm_up_duration_time:转储 sstable 预热时间,预热时间内 memtable 不能释放。转储完成后到预热时间内,所有对应 partition 的流量会逐步从 memtable 过渡到 sstable。此配置项在 OceanBase 数据库 V4.x 版本已废弃。_ob_minor_merge_schedule_interval:转储任务扫描调度线程的轮询调度时间间隔,默认 20s。此配置项在 OceanBase 数据库 V4.x 版本已废弃。_ob_sys_high_load_per_cpu_threshold:根据系统 load 控制合并线程降速,当平均每 cpu 系统负载 (load/cpu_count) 超过指定阈值时,开始对合并降速,具体做法就是停掉部分合并线程,但是至少会保留一个工作线程。此配置项在 OceanBase 数据库 V4.x 版本已废弃。_ob_queuing_fast_freeze_min_count:指定该 queuing 表删除达到最小行数后开始触发冻结,默认值为 500000。此配置项在 OceanBase 数据库 V4.x 版本已废弃。_ob_queuing_fast_freeze_min_threshold:指定该 queuing 表删除行达到基线 sstable 指定比例后开始触发冻结,默认值为 10。此配置项在 OceanBase 数据库 V4.x 版本已废弃。default_progressive_merge_num:设置新建一张表时默认的渐进合并次数。可以通过表级属性 progressive_merge_num 控制合并行为,创建表时未指定 progressive_merge_num 则被设置为该值。- progressive num = 0 时,表示使用默认值 100。
- progressive num = 1 时,表示强制执行全量合并,不执行渐进合并。
- progressive num = X 时,表示 X 轮合并重写完全部数据,每轮合并重写 1/X。
enable_major_freeze:是否允许发起集群/租户级合并。_minor_deferred_gc_level:转储 sstable 延迟回收级别。- 0:延迟回收 L0 sstable。
- 1: 延迟回收所有转储 sstable。
minor_deferred_gc_time:转储 sstable 延迟回收时间,即在 compaction 完成后,再过了 gc 时间才会真正回收相应 sstable。_follower_replica_merge_level:D 副本合并策略。- 0: D 副本本地不做 L1 或 L0 compaction 和合并。
- 1: D 副本本地不做 major,但做 L1 或 L0 compaction。
- 2: D 副本本地做 major,但不做 L1 或 L0 compaction。
- 3: D 副本本地做 major,同时也做 L1 或 L0 compaction。
_enable_parallel_minor_merge:租户级并行转储配置项。当开启该配置项后,该租户相关表会走并行转储路径,并行转储任务的拆分方式和并行合并类似,都通过表上的 tablet_size 来控制。_ob_queuing_fast_freeze_min_count:用来控制该表删除达到指定范围行数时开始触发冻结,租户级配置项,默认值是 500000,取值范围 10000~100000000。_ob_queuing_fast_freeze_min_threshold:用来控制该表删除行达到基线 sstable 指定比例后开始触发冻结,租户级配置项,默认值 10, 取值范围 0~100。obclient > ALTER SYSTEM SET _enable_parallel_minor_merge = true tenant = 'test';
OceanBase 数据库 V4.x 版本新增的参数
compaction_low_thread_score:低优先级 compaction(major) 线程权重分数,配置项默认为 0,表示使用内部默认值 6。compaction_mid_thread_score:中优先级 compaction(minor) 线程权重分数,配置项默认为 0,表示使用内部默认值 6。compaction_high_thread_score:高优先级 compaction(mini) 线程权重分数,配置项默认为 0,表示使用内部默认值 6。ob_compaction_schedule_interval:转储/合并任务扫描调度线程的轮询调度时间间隔,默认 120s。_enable_adaptive_compaction:开启或关闭自适应 compaction 调度。默认为 true。compaction_dag_cnt_limit:compaction dag 队列的上限,对于百万分区场景需要调整。compaction_schedule_tablet_batch_cnt:后台遍历线程每次遍历的分区数上限。dag_scheduler_thread_score:DagScheduler 整体的线程权重分数。
适用版本
OceanBase 数据库所有版本。