Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

distributed_* 会话设置

这些设置可在 system.settings 中找到,并根据 源代码 自动生成。

distributed_aggregation_memory_efficient

类型
Bool
默认值
1

是否启用分布式聚合的内存节省模式。

distributed_connections_pool_size

类型
UInt64
默认值
1024

对单个 Distributed 表的所有查询执行分布式处理时,与远程服务器的最大并发连接数。建议将该值设置为不小于集群中的服务器数量。

distributed_foreground_insert

别名: insert_distributed_sync

类型
Bool
默认值
0

启用或禁用向 Distributed 表同步插入数据。

默认情况下,向 Distributed 表插入数据时,ClickHouse server 会以后台模式将数据发送到集群节点。当 distributed_foreground_insert=1 时,数据会同步处理,并且只有在所有数据都保存到所有分片上之后,INSERT 操作才会成功 (如果 internal_replication 为 true,则每个分片上至少有一个副本) 。

可能的值:

  • 0 — 数据以后台模式插入。
  • 1 — 数据以同步模式插入。

Cloud 默认值:1

另请参见

distributed_group_by_no_merge

类型
UInt64
默认值
0

在分布式查询处理过程中,不合并来自不同服务器的聚合状态;当可以确定不同分片上的键各不相同时,可使用此设置

可能的值:

  • 0 — 禁用 (最终查询处理在发起节点上完成) 。
  • 1 - 在分布式查询处理过程中,不合并来自不同服务器的聚合状态 (查询在分片上完全处理,发起节点仅转发数据) ;当可以确定不同分片上的键各不相同时,可使用此设置。
  • 2 - 与 1 相同,但会在发起节点上应用 ORDER BYLIMIT (而在 distributed_group_by_no_merge=1 的情况下,当查询完全在远程节点上处理时,这是不可能的) (可用于带有 ORDER BY 和/或 LIMIT 的查询) 。

示例

SELECT *
FROM remote('127.0.0.{2,3}', system.one)
GROUP BY dummy
LIMIT 1
SETTINGS distributed_group_by_no_merge = 1
FORMAT PrettyCompactMonoBlock

SELECT *
FROM remote('127.0.0.{2,3}', system.one)
GROUP BY dummy
LIMIT 1
SETTINGS distributed_group_by_no_merge = 2
FORMAT PrettyCompactMonoBlock

distributed_insert_skip_read_only_replicas

类型
Bool
默认值
0
版本历史
版本默认值注释
24.30如果为 true,则向 Distributed 执行 INSERT 时会跳过只读副本

启用后,对于向 Distributed 执行的 INSERT 查询,会跳过只读副本。

可选值:

  • 0 — INSERT 行为保持不变;如果请求发送到只读副本,将会失败
  • 1 — 发起节点会在将数据发送到分片之前跳过只读副本。

distributed_product_mode

类型
DistributedProductMode
默认值
deny

更改分布式子查询的行为。

当查询中出现分布式表的乘积时,ClickHouse 会应用此设置;也就是说,当针对分布式表的查询中包含一个针对该分布式表的非 GLOBAL 子查询时,就会应用此设置。

限制:

  • 仅适用于 IN 和 JOIN 子查询。
  • 仅当 FROM 子句使用了包含多个分片的分布式表时。
  • 仅当子查询涉及包含多个分片的分布式表时。
  • 不适用于表值函数 remote

可能的值:

  • deny — 默认值。禁止使用这类子查询 (返回 “Double-distributed in/JOIN subqueries is denied” 异常) 。
  • local — 将子查询中的数据库和表替换为目标端服务器 (分片) 的本地数据库和表,保留普通的 IN/JOIN.
  • global — 将 IN/JOIN 查询替换为 GLOBAL IN/GLOBAL JOIN.
  • allow — 允许使用这类子查询。

distributed_push_down_limit

类型
UInt64
默认值
1

启用或禁用在每个分片上单独应用 LIMIT

这样可以避免:

  • 通过网络传输多余的行;
  • 在发起节点上处理超出 LIMIT 的行。

从 21.9 版本开始,将不再出现结果不准确的情况,因为 distributed_push_down_limit 只有在至少满足以下条件之一时才会更改查询执行:

可能的值:

  • 0 — 禁用。
  • 1 — 启用。

另请参见:

Navigation