跳到主要内容
跳到主要内容

clusterAllReplicas 表函数

允许在无需创建 Distributed 表的情况下,访问集群在 remote_servers 配置段中定义的所有分片。查询时,每个分片仅会访问一个副本。

clusterAllReplicas 函数与 cluster 函数类似,但会查询所有副本。集群中的每个副本都会作为独立的分片/连接使用。

注意

所有可用的集群都列在 system.clusters 表中。

语法

cluster(['cluster_name', db.table, sharding_key])
cluster(['cluster_name', db, table, sharding_key])
clusterAllReplicas(['cluster_name', db.table, sharding_key])
clusterAllReplicas(['cluster_name', db, table, sharding_key])

参数

参数类型
cluster_name集群名称,用于构建到远程和本地服务器的一组地址和连接参数,如果未显式指定,则默认为 default
db.table or db, table数据库和表的名称。
sharding_key分片键。可选项。如果集群包含多个分片,则必须指定。

返回值

来自各集群的数据集。

使用宏

cluster_name 可以包含宏——用花括号括起的替换占位符。替换后的值取自服务器配置文件中的 macros 部分。

示例:

SELECT * FROM cluster('{cluster}', default.example_table);

使用方式和建议

使用 clusterclusterAllReplicas 表函数的效率低于创建 Distributed 表,因为在这种情况下,每个请求都会重新建立与服务器的连接。在处理大量查询时,请务必预先创建 Distributed 表,而不要使用 clusterclusterAllReplicas 表函数。

clusterclusterAllReplicas 表函数在以下场景中会比较有用:

  • 访问特定集群以进行数据对比、调试和测试。
  • 出于研究目的,对多个 ClickHouse 集群和副本执行查询。
  • 不常见且由人工发起的分布式请求。

hostportuserpasswordcompressionsecure 等连接设置从 <remote_servers> 配置节中获取。详情参见 Distributed 引擎