更新时间:2025-12-10 GMT+08:00
分享

Doris支持表级别compaction调优

场景介绍

  • 如果业务存在实时入库和离线入库的场景,且离线入库任务中存在业务核心表(如聚合键宽表),业务上对此类型表的查询性能要求较高的情况下,为了加速表查询性能,可以考虑为这类表设置独立的Cumulative Compaction时间间隔策略,将表的Compaction的时间间隔调小,以加速文件合并提升查询效率。
  • 如果业务存在对某些非核心表的查询性能要求较低,不能影响其他核心表查询性能,可以考虑对这些非核心表设置Cumulative Compaction时间间隔策略,通过将表的Compaction的时间间隔调大,使其他核心表获得Compaction的机率增加,满足核心表业务的查询性能。

约束与限制

  • 该章节仅MRS 3.6.0-LTS及之后版本支持。
  • 需保证BE集群的内存、CPU和磁盘IO吞吐使用率在60%以内,如果使用率过高不适宜使用此特性,建议扩容后使用。
  • 此特性需要和BE侧Compaction调优参数一起使用,调整BE侧Compaction常见参数说明请参见表1
    表1 BE的compaction调优参数

    参数

    优化值

    默认值

    参数说明

    max_cumu_compaction_threads

    8

    -1

    调大Cumulative Compaction线程,调大并发加速Compaction,默认根据磁盘个数计算。

    enable_delete_when_cumu_compaction

    true

    false

    是否开启Cumulative Compaction进行delete文件的合并。

    base_compaction_min_rowset_num

    15

    5

    Base Compaction的触发条件,最小rowset数,调大避免Base Compaction过于频繁(建议仅高频入库的极端场景时再考虑设置)。

    compaction_task_num_per_disk

    8

    4

    调大单盘上的Compaction线程数。

    cumulative_compaction_min_deltas

    1

    5

    Cumulative Compaction的触发条件,大于多少文件可以合并(建议仅高频入库的极端Compaction时再考虑设置)。

操作示例

  • 在Doris建表语句的表属性中设置参数“cumulative_compaction_pause_interval_seconds”,以指定此表的Cumulative Compaction的时间间隔,单位为秒,不配置该参数时系统默认设置的Cumulative Compaction时间间隔为120秒,例如,可执行以下命令配置参数:
    create table z_test (
    id int,
    name varchar(40),
    max_dm int MAX
    ) aggregate key(id, name)
    distributed by hash(id, name) buckets 4
    PROPERTIES (
    "cumulative_compaction_pause_interval_seconds"="20"
    );
  • 执行ALTER TABLE命令修改表的参数值:
    ALTER TABLE z_test SET ("cumulative_compaction_pause_interval_seconds"="600");

相关文档