[查询]StarRocks开启Pipeline后并行度设置说明

StarRocks 2.2 版本起,正式发布 Pipeline 引擎。 2.3 版本,默认开启 Pipeline 执行引擎。

关闭开启pipeline

通过以下命令可以开启/关闭pipeline:

SET enable_pipeline_engine = true;

并行度相关参数

通过以下参数可以调整查询并行度:

-- 简称 dop
SET pipeline_dop = 0;
-- INT含义为可以设置为整数值,简称 instance_num 
SET GLOBAL parallel_fragment_exec_instance_num = INT;
参数 说明
enable_pipeline_engine 是否启用 Pipeline 执行引擎。true:启用(默认),false:不启用。
pipeline_dop 一个 Pipeline 实例的并行数量。建议设为默认值 0,即系统自适应调整每个 pipeline 的并行度。您也可以设置为大于 0 的数值,通常为 BE 节点 CPU 物理核数的一半。
parallel_fragment_exec_instance_num 一个 Fragment 实例的并行数量。一个 Fragment 实例占用 BE 节点的一个 CPU,所以一个查询的并行度为一个 Fragment 实例的并行数量。

并行度调整说明

StarRocks version <=2.3 版本(包括2.3版本):

  • dop!=0 时,instance_num 和 dop 都会生效;be_num * instance_num * dop =总并行度。
  • dop=0 时,会忽略 session 变量 instance_num(单be instance个数),会自动调整 dop 和 instance_num,最终的 dop * instance_num=be节点核数一半。 be_num * instance_num * dop =总并行度。

2.3 版本之后:

pipeline 的 instance_num 永远是 1,会忽略 session 变量的 instance_num,通过dop参数进行并行度的调节。

注意:

  • 实际场景中,一个 Fragment 实例的并行数量存在上限,为一张表在一个 BE 中的 Tablet 数量。例如,一张表的 3 个分区,32 个分桶,分布在 4 个 BE 节点上,则一个 BE 节点的 Tablet 数量为 32 * 3 / 4 = 24,因此该 BE 节点上一个 Fragment 实例的并行数上限为 24,此时即使设置该参数为 32 ,实际使用时并行数仍为 24。
  • 在高并发场景下,CPU 资源往往已充分利用,因此建议设置 Fragment 实例的并行数量为 1 ,以减少不同查询间资源竞争,从而提高整体查询效率。