跳至主要内容

集群,clusterAllReplicas

允许访问集群的所有分片(在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.tabledbtable - 数据库和表的名称。
  • sharding_key - 分片键。可选。如果集群有多个分片,则需要指定。

返回值

来自集群的数据集。

使用宏

cluster_name可以包含宏 - 花括号中的替换。替换的值取自服务器配置文件的部分。

示例

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

用法和建议

使用clusterclusterAllReplicas表函数的效率低于创建Distributed表,因为在这种情况下,服务器连接会为每个请求重新建立。在处理大量查询时,请始终提前创建Distributed表,并且不要使用clusterclusterAllReplicas表函数。

clusterclusterAllReplicas表函数在以下情况下可能很有用

  • 访问特定集群以进行数据比较、调试和测试。
  • 出于研究目的,查询各种 ClickHouse 集群和副本。
  • 手动进行的不频繁的分布式请求。

连接设置(如hostportuserpasswordcompressionsecure)取自<remote_servers>配置部分。有关详细信息,请参阅分布式引擎

另请参阅