【sr版本】2.3.0正式版
【背景】3fe+20be;
查询的表test_src为聚合模型表,副本数为3,分桶数为20,无分区,数据量39亿左右;
写入的表test_dest为聚合模型表,副本数为3,分区数1300多个,每个分区分桶数20个,数据量39亿左右;
test_src和test_dest分桶键为同一字段forder_id;
经确认,表test_src 60个tablet均匀分布在20个be节点(每个be节点3个tablet),以下是执行show tablet from test_src order by BackendId desc的结果:
show_tablet.txt (27 KB)
【生产场景】
enable_pipeline_engine=true
pipeline_dop=0
parallel_fragment_exec_instance_num=1
执行的sql:
测试sql.sql (18.9 KB)
遇到的问题:
sql耗时30min,查看profile发现集群20个be节点,fragment0只有18个be节点执行,其中有2个be节点处理了两倍于其他节点的数据,耗时30min,而其他节点耗时16min以下,如下图:
profile文件如下:
profile1.txt (81.5 KB)
前面背景介绍里已经提到表test_src 60个tablet均匀分布在20个be节点,所以排除了节点数据分布不均的情况。
后面我试着调整session级别的enable_pipeline_engine、pipeline_dop、parallel_fragment_exec_instance_num这三个参数,但不管我如何设置如何组合,fragment0都只有18个be节点执行,耗时都是30min