
# 提升Doris聚合键大宽表查询性能
针对聚合键大宽表，其查询性能下降一般原因为写入数据的Segment合并不彻底，当业务查询此类表时聚合键的数据需要全部读取出来后再做合并返回最终数值，如果存在Segment较多，其状态多为OVERLAPPING时，查询性能下降会比较严重，针对这种场景需考虑进行性能调优，本章节的优化参数以Doris 2.1.*x*内核举例（适用于MRS 3.6.0-LTS及之后版本）。
#### 优化Session参数配置
以下Session参数，可在MySQL客户端连接Doris后根据实际需求执行**set** *参数名称* **=** *参数值* **;**命令配置。
表1Session参数调优配置 
| **参数**                      | **优化值**  | **默认值**  | **参数配置说明**                                                                                      |
|:---|:---|:---|:---|
| auto_analyze_end_time       | 8:00:00  | 23:59:59 | Doris 2.1.*x*内核默认开启Analyze任务，可以调整其运行时间，使得和查询或入库高峰期错位。"8:00:00"表示上午8点到12点是查询业务高峰期，错位运行，减少计算资源压力。 |
| auto_analyze_start_time     | 12:00:00 | 0:00:00  | Analyze任务起始时间。                                                                                  |
| enable_function_pushdown    | TRUE     | FALSE    | 开启Function下推。                                                                                   |
| enable_partition_cache      | TRUE     | FALSE    | 开启Partition缓存。                                                                                  |
| enable_runtime_filter_prune | FALSE    | TRUE     | 关闭RuntimeFilter的过滤条件裁剪。                                                                         |
| parallel_pipeline_task_num  | 1        | 0        | 由于查询业务高峰并发较大，为减少CPU使用率，设置参数值为"1"。                                                               |
| runtime_filter_max_in_num   | 102400   | 1024     | 提高Filter过滤数据量条件。                                                                                |
| runtime_filter_wait_time_ms | 10000    | 1000     | 设置RuntimeFilter计划等待时间，尽可能为大SQL优化器计算提供最优选择。                                                      |
   
#### 优化BE参数配置
在FusionInsight Manager页面，选择"集群 \> 服务 \> Doris \> 配置 \> 全部配置 \> BE（角色） \> 自定义"，根据实际需求添加对应自定义参数配置BE调优参数。
表2BE参数调优配置 
| **参数**                               | **优化值** | **默认值** | **参数配置说明**                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| max_cumu_compaction_threads          | 8       | -1      | 调大Cumulative Compaction线程，调大并发加速Compaction。                                                                                                                                                                                                                                                                     |
| enable_delete_when_cumu_compaction   | true    | false   | 开启Cumulative Compaction进行delete文件的合并。                                                                                                                                                                                                                                                                           |
| enable_skip_tablet_compaction        | false   | true    | 针对120秒内做过合并的Tablet只要Score满足还会再进行合并（建议仅高频入库的极端场景时再考虑关闭）。                                                                                                                                                                                                                                                         |
| base_compaction_min_rowset_num       | 20      | 5       | Base Compaction的触发条件，最小rowset数，调大避免Base Compaction过于频繁（建议仅高频入库的极端场景时再考虑设置）。                                                                                                                                                                                                                                     |
| base_compaction_min_data_ratio       | 0.8     | 0.3     | Base Compaction的触发条件，数据大小比例（建议仅高频入库的极端场景时考虑再配置）。                                                                                                                                                                                                                                                                |
| compaction_task_num_per_disk         | 8       | 4       | 调大单盘上的Compaction线程数。                                                                                                                                                                                                                                                                                            |
| cumulative_compaction_min_deltas     | 1       | 5       | Cumulative Compaction的触发条件，大于多少文件可以合并（建议在BE计算资源充足且数据盘IO较低情况下，需要使用极端Compaction提升Segment合并时再考虑配置）。                                                                                                                                                                                                                |
| compaction_promotion_size_mbytes     | 1       | 1024    | Cumulative Compaction输出的rowset总磁盘大小超过了此配置值，该rowset将用于Base Compaction，单位为字节。（建议在BE计算资源充足且数据盘IO较低情况下，需要使用极端Compaction提升Segment合并时再考虑配置）。 一般情况下，建议该配置值小于2GB，防止Cumulative Compaction时间过长，导致版本积压。                                                      |
| compaction_promotion_min_size_mbytes | 0       | 128     | Cumulative Compaction输出的rowset总磁盘大小小于此配置值时，该rowset将不进行Base Compaction，仍然处于Cumulative Compaction流程中，单位为字节。（建议在BE计算资源充足且数据盘IO较低情况下，需要使用极端Compaction提升Segment合并时再考虑配置）。该参数设置为"0"表示所有最小值的rowset都会被合并。 一般情况下，建议该配置值小于512MB，配置过大会导致一直不进行Base Compaction。 |
   
