Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

clusterAllReplicas

Distributed テーブルを作成せずに、クラスターのすべての分片 (remote_servers セクションで設定) にアクセスできます。各分片では、1 つのレプリカのみがクエリされます。

clusterAllReplicas 関数 — cluster と同様ですが、すべてのレプリカがクエリされます。クラスター内の各レプリカは、それぞれ個別の分片/接続として扱われます。

構文

cluster(['cluster_name', db.table, sharding_key][, SETTINGS name = value, ...])
cluster(['cluster_name', db, table, sharding_key][, SETTINGS name = value, ...])
clusterAllReplicas(['cluster_name', db.table, sharding_key][, SETTINGS name = value, ...])
clusterAllReplicas(['cluster_name', db, table, sharding_key][, SETTINGS name = value, ...])

引数

引数
cluster_name リモートおよびローカルのサーバーに対するアドレスのセットと接続パラメーターの構築に使用されるクラスター名です。指定しない場合は default が設定されます。
db.table or db, table データベース名とテーブル名です。
sharding_key シャーディングキーです。省略可能です。クラスターに複数の分片がある場合は指定する必要があります。
SETTINGS name = value, ... 関数によって作成されるDistributedテーブルの設定です (例: skip_unavailable_shards) 。省略可能です。クエリで指定された設定がこれより優先されます。

戻り値

クラスターから取得したデータセット。

マクロの使用

cluster_name には、{} で置換されるマクロを含めることができます。置換される値は、サーバー設定ファイルの macros セクションから取得されます。

例:

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

使用方法と推奨事項

cluster および clusterAllReplicas テーブル関数の使用は、Distributed テーブルを作成する場合よりも非効率です。これは、この場合、リクエストごとにサーバー接続が再確立されるためです。大量のクエリを処理する場合は、必ずあらかじめ Distributed テーブルを作成し、cluster および clusterAllReplicas テーブル関数は使用しないでください。

cluster および clusterAllReplicas テーブル関数は、次のような場合に役立ちます。

  • データの比較、デバッグ、テストのために特定のクラスターにアクセスする場合。
  • 調査目的で、さまざまな ClickHouse クラスターやレプリカに対してクエリを実行する場合。
  • 手動で実行する頻度の低い分散リクエスト。

hostportuserpasswordcompressionsecure などの接続設定は、<remote_servers> 設定セクションから取得されます。詳細は Distributed engine を参照してください。

Navigation