doris2.0.3版本,如何设置批次更新任务与查询任务的资源隔离

Viewed 59

集群规模是3个fe(32c48g)+3个be(32c64g)

插入语句:
insert into tableA
select XX,XX
FROM tableB b
left join tableC c on b.id=c.id
left join tableD d on b.id=d.id
left join tableE e on d.id=e.id
where b.create_time > '2024-04-10'

语句类似是这样,表都是千万级别,大概执行需要30秒

查询语句:
select * from A_table a left join B_table b on a.id=b.id,该查询语句在正常的时候是0.2秒-1秒之间波动

如果此刻在插入,查询耗时就会去到6 7秒甚至10多秒,插入的表与查询的表不是同一批,互相独立

如果不是执行insert 只是select,比如执行

select XX,XX
FROM tableB b
left join tableC c on b.id=c.id
left join tableD d on b.id=d.id
left join tableE e on d.id=e.id
where b.create_time > '2024-04-10'

对查询语句的影响就比较小,通常2 3秒内就能出结果,请问该如何进行优化?

----------------追加----------------

后来我按照官方文档尝试了WORKLOAD GROUP资源隔离,没有起到什么作用;

也尝试了Resource Group,把3个BE的tag其中一个设置为etl,用户只能使用etl的资源,并且把表属性都设置了一遍,数据均衡结束后观察,效果并不理想,感觉资源还是没有隔离开,使用etl用户在批次任务跑的期间,其他的查询性能还是很低,是否doris就不适合用来跑批次任务,只适合用来查询?

设置如下:

BE

用户

执行期间BE内存表现,etl所在be,内存也没有表现得比其他be高很多

实际效果如图,同一个接口在批次任务执行期间(13:33-13:38分)表现出来的性能还是很差

1 Answers

Doris是优先插入的,插入查询同时进行的时候,查询靠后