cluster, clusterAllReplicas
クラスタのすべてのシャード(remote_serversセクションで設定)が、分散テーブルを作成せずにアクセスできます。各シャードのレプリカのうち1つだけがクエリされます。
clusterAllReplicas関数 — clusterと同様ですが、すべてのレプリカがクエリされます。クラスタ内の各レプリカが個別のシャード/接続として使用されます。
Note
利用可能なすべてのクラスタは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またはdb,table- データベースとテーブルの名前。sharding_key- シャーディングキー。任意。クラスタが複数のシャードを持つ場合に指定が必要です。
返される値
クラスタからのデータセット。
マクロの使用
cluster_nameにはマクロを含めることができます。波括弧の中にある値は、サーバー設定ファイルのmacrosセクションからの置換値です。
例:
SELECT * FROM cluster('{cluster}', default.example_table);
使用法と推奨事項
clusterおよびclusterAllReplicasテーブル関数を利用することは、Distributedテーブルを作成するよりも効率が劣ります。というのは、この場合、要求ごとにサーバー接続が再確立されるためです。大量のクエリを処理する際は、常に事前にDistributedテーブルを作成し、clusterおよびclusterAllReplicasテーブル関数を使用しないでください。
clusterおよびclusterAllReplicasテーブル関数は、次のような場合に有用です:
- 特定のクラスタへのアクセスを通じたデータの比較、デバッグ、およびテスト。
- 研究目的でのさまざまなClickHouseクラスタやレプリカへのクエリ。
- 手動で実行されるまれな分散要求。
接続設定(host、port、user、password、compression、secureなど)は<remote_servers>構成セクションから取得されます。Distributedエンジンの詳細を参照してください。
関連項目