ClickHouse/docs/ja/sql-reference/table-functions/cluster.md
2024-11-18 11:58:58 +09:00

3.2 KiB
Raw Blame History

slug sidebar_position sidebar_label title
/ja/sql-reference/table-functions/cluster 30 cluster 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クラスタやレプリカへのクエリ。
  • 手動で実行されるまれな分散要求。

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

関連項目