这些设置可在 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 BY和LIMIT(而在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.3 | 0 | 如果为 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 只有在至少满足以下条件之一时才会更改查询执行:
- distributed_group_by_no_merge > 0。
- 查询不包含
GROUP BY/DISTINCT/LIMIT BY,但包含ORDER BY/LIMIT。 - 查询包含
GROUP BY/DISTINCT/LIMIT BY以及ORDER BY/LIMIT,并且:
可能的值:
- 0 — 禁用。
- 1 — 启用。
另请参见: