Skip to main content
这些设置可在 system.settings 中查看,并由 源文件 自动生成。

parallel_replicas_allow_in_with_subquery

如果为 true,则 IN 子查询会在每个 follower 副本上执行。

parallel_replicas_allow_materialized_views

允许并行副本使用 materialized views

parallel_replicas_allow_merge_tables

允许使用并行副本从 Merge 表读取。仅在与 parallel_replicas_plan_based 配合使用时生效:对 Merge 表的读取会展开为对底层 MergeTree 表读取的 union,随后像其他 union 一样进行分布式执行。若其中任一底层表无法以这种方式读取 (例如非 MergeTree 表、FINAL 读取) ,则该 Merge 表仍只在单个副本上读取。将其设置为 false,则每个 Merge 表都在单个副本上读取,与新增该支持之前的行为一致。Experimental。

parallel_replicas_allow_view_over_mergetree

允许并行副本在基于 MergeTree 表的简单视图上执行外层查询 (而非视图的内部查询) ,从而提高节点间的并行化能力。同样适用于 UNION ALL 视图,前提是其所有分支都从不同的 MergeTree 表读取。

parallel_replicas_connect_timeout_ms

使用并行副本进行查询执行时,连接远程副本的超时时间,单位为毫秒。如果发生超时,则不会使用相应的副本进行查询执行

parallel_replicas_count

这是一个不应直接使用的内部设置,用于表示“并行副本”模式的实现细节。对于分布式查询,发起服务器会自动将此设置设为参与查询处理的并行副本数。

parallel_replicas_custom_key

可用于在特定表的各个副本之间分摊工作的任意整数表达式。 该值可以是任意整数表达式。 优先使用基于主键的简单表达式。 如果该设置用于由单个分片和多个副本组成的集群,这些副本将被转换为虚拟分片。 否则,其行为将与 SAMPLE 键相同,即会使用每个分片的多个副本。 该表达式会依据用户的列级 SELECT 授权进行检查。对于使用 SQL SECURITY DEFINER 或 NONE 的视图,该检查应用于视图的列;读取视图主体时不会应用该检查。

parallel_replicas_custom_key_range_lower

允许 range 类型的过滤器根据自定义范围 [parallel_replicas_custom_key_range_lower, INT_MAX],在各副本之间均匀分配工作负载。 与 parallel_replicas_custom_key_range_upper 配合使用时,它可让该过滤器针对范围 [parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper] 在各副本之间均匀分配工作负载。 注意:此设置不会在查询处理期间额外过滤任何数据,而只是改变 range 过滤器为并行处理拆分范围 [0, INT_MAX] 时所使用的分界点。

parallel_replicas_custom_key_range_upper

允许 range 类型的过滤器根据自定义范围 [0, parallel_replicas_custom_key_range_upper],在各副本之间均匀拆分工作。值为 0 时将禁用上界,并将其设为自定义键表达式的最大值。 当与 parallel_replicas_custom_key_range_lower 配合使用时,它可让过滤器在范围 [parallel_replicas_custom_key_range_lower, parallel_replicas_custom_key_range_upper] 内将工作均匀分配到各个副本。 注意:此设置不会在查询处理期间额外过滤任何数据;它只是改变了 range 过滤器在并行处理时拆分范围 [0, INT_MAX] 的分界点。

parallel_replicas_filter_pushdown

允许将过滤器下推到由并行副本选择执行的查询部分

parallel_replicas_for_cluster_engines

将表函数引擎替换为对应的 -Cluster 版本

parallel_replicas_for_non_replicated_merge_tree

如果为 true,ClickHouse 也会对非复制的 MergeTree 表使用并行副本算法

parallel_replicas_index_analysis_only_on_coordinator

索引分析仅在副本协调器上执行,其他副本则跳过。仅在启用 parallel_replicas_local_plan 时生效

parallel_replicas_insert_select_local_pipeline

在启用并行副本的分布式 INSERT SELECT 中使用本地管道

parallel_replicas_local_plan

为本地副本构建本地执行计划

parallel_replicas_mark_segment_size

parts 会在逻辑上划分为多个分段,以便在并行读取时分配给各个副本。此设置用于控制这些分段的大小。除非你非常确定自己在做什么,否则不建议更改。取值范围应为 [128; 16384]

parallel_replicas_min_number_of_rows_per_replica

将查询中使用的副本数量限制为 (预计读取的行数 / min_number_of_rows_per_replica) 。最大值仍然受 ‘max_parallel_replicas’ 限制

parallel_replicas_mode

并行副本中 custom key 使用的过滤器类型。default - 对 custom key 使用 modulo 运算,range - 在 custom key 上使用 range filter,并基于 custom key 值类型的所有可能值进行处理。

parallel_replicas_plan_based

通过分析查询计划,决定是否使用并行副本以及在何处使用,而不是基于查询树进行分析。因此,发送到远程副本的是计划片段而非 SQL 查询。Experimental。

parallel_replicas_prefer_local_join

如果为 true,且 JOIN 可以使用并行副本算法执行,并且原本需要 materialized 到临时表中的那一侧 JOIN 部分的每个存储引擎都能由各个副本自行读取,则会使用本地 JOIN,而不是 GLOBAL JOIN。该部分通常指右侧,但 RIGHT JOIN 除外——此时指的是左侧,并且其中每个存储引擎都必须支持并行副本,而不仅仅是 *MergeTree。位于嵌套 GLOBAL JOIN 的 materialized 一侧、或位于 GLOBAL IN 之下的存储引擎不计入其中,因为这些由发起服务器自行 materialized。

parallel_replicas_prefer_local_replica

启用时 (默认) ,本地副本始终会包含在用于并行读取的副本集合中。 禁用时,本地副本不再具有任何优先权,副本将完全根据负载均衡算法选择。 这样一来,带有 max_parallel_replicas = 1 的查询可被定向到其他主机;当大量短查询分布在集群中时,这有助于改善缓存局部性。

parallel_replicas_support_projection

投影优化可在并行副本中应用。仅在启用 parallel_replicas_local_plan 且 aggregation_in_order 未启用时生效。
最后修改于 2026年9月26日