
# Doris支持表级别compaction调优
#### 场景介绍
- 如果业务存在实时入库和离线入库的场景，且离线入库任务中存在业务核心表（如聚合键宽表），业务上对此类型表的查询性能要求较高的情况下，为了加速表查询性能，可以考虑为这类表设置独立的Cumulative Compaction时间间隔策略，将表的Compaction的时间间隔调小，以加速文件合并提升查询效率。
- 如果业务存在对某些非核心表的查询性能要求较低，不能影响其他核心表查询性能，可以考虑对这些非核心表设置Cumulative Compaction时间间隔策略，通过将表的Compaction的时间间隔调大，使其他核心表获得Compaction的机率增加，满足核心表业务的查询性能。
 
#### 约束与限制
- 该章节仅MRS 3.6.0-LTS及之后版本支持。
- 需保证BE集群的内存、CPU和磁盘IO吞吐使用率在60%以内，如果使用率过高不适宜使用此特性，建议扩容后使用。
- 此特性需要和BE侧Compaction调优参数一起使用，调整BE侧Compaction常见参数说明请参见[表1]。
   表1BE的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");
  ```
  
 
