ClickHouse/docs/en/sql-reference/table-functions/cluster.md
2021-08-16 23:00:38 +00:00

2.7 KiB
Raw Blame History

toc_priority toc_title
50 cluster

cluster, clusterAllReplicas

Allows to access all shards in an existing cluster which configured in remote_servers section without creating a Distributed table. One replica of each shard is queried.

clusterAllReplicas function — same as cluster, but all replicas are queried. Each replica in a cluster is used as separate shard/connection.

!!! note "Note" All available clusters are listed in the system.clusters table.

Syntax

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])

Arguments

  • cluster_name Name of a cluster that is used to build a set of addresses and connection parameters to remote and local servers.
  • db.table or db, table - Name of a database and a table.
  • sharding_key - When insert into cluster function with more than one shard, sharding key needs to be provided. Optional.

Returned value

The dataset from clusters.

Using Macros

Arguments can contain macros — substitutions in curly brackets. The substituted values are taken from the macros section of the server configuration file.

Example:

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

Usage and Recommendations

Using the cluster and clusterAllReplicas table functions are less efficient than creating a Distributed table because in this case, the server connection is re-established for every request. When processing a large number of queries, please always create the Distributed table ahead of time, and do not use the cluster and clusterAllReplicas table functions.

The cluster and clusterAllReplicas table functions can be useful in the following cases:

  • Accessing a specific cluster for data comparison, debugging, and testing.
  • Queries to various ClickHouse clusters and replicas for research purposes.
  • Infrequent distributed requests that are made manually.

Connection settings like host, port, user, password, compression, secure are taken from <remote_servers> config section. See details in Distributed engine.

See Also