メインコンテンツへスキップ
メインコンテンツへスキップ

clusterAllReplicas テーブル関数

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

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

使用方法と推奨事項

cluster および clusterAllReplicas テーブル関数の使用は、各リクエストごとにサーバー接続が再確立されるため、Distributed テーブルを作成して利用する場合と比べて効率が低くなります。多数のクエリを処理する際は、必ず事前に Distributed テーブルを作成し、cluster および clusterAllReplicas テーブル関数の使用は避けてください。

cluster および clusterAllReplicas テーブル関数は、次のような場合に有用です。

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

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