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");