Doris 的查询是一个 MPP 的执行框架,每一条查询都会在多个 BE 上并行执行;同时,在单个 BE 内部也会采用多线程并行的方式来加速查询的执行效率,目前所有的语句(包括 Query,DML,DDL)均支持并行执行。
单个 BE 内并行度的控制参数是:parallel_pipeline_task_num,是指单个 Fragment 在执行时所使用的工作任务数。
并行度调优的原则
parallel_pipeline_task_num 设定目的是为了充分利用多核资源,降低查询的延迟;但是,为了多核并行执行,通常会引入一些数据 Shuffle 算子,以及多线程之间同步的逻辑,这也会带来一些不必要的资源浪费。
Doris 中默认值为 0,即 BE 的 CPU 核数目的一半,这个值考虑了单查询和并发的资源利用的情况,通常不需要用户介入调整。当存在性能瓶颈时可以参考下面示例进行必要的调整。Doris 在持续完善自适应的策略,通常建议在特定场景或 SQL 级别进行必要的调整。
示例
假设 BE 的 CPU 核数为 16:
- 对于单表的简单操作(如单表点差、where 扫描获取少量数据,limit 少量数据,命中物化视图) 并行度可设置为 1
说明:单表的简单操作,只有

最低0.47元/天 解锁文章
837

被折叠的 条评论
为什么被折叠?



