Join テーブルエンジン
JOIN 演算で使用するための、オプションの事前構築済みデータ構造です。
ClickHouse Cloud で、サービスがバージョン 25.4 より前に作成されている場合は、SET compatibility=25.4 を実行して、compatibility を少なくとも 25.4 に設定する必要があります。
テーブルの作成
CREATE TABLE クエリの詳細については、説明を参照してください。
エンジンパラメータ
join_strictness
join_strictness – JOIN の厳密度。
join_type
join_type – JOIN の種類。
キー列
k1[, k2, ...] – JOIN 演算が実行される際の、USING 句内のキー列。
join_strictness および join_type パラメータは、Join(ANY, LEFT, col1) のように引用符なしで指定します。これらは、そのテーブルが使用される JOIN 演算と一致していなければなりません。パラメータが一致しない場合でも、ClickHouse は例外をスローせず、誤ったデータを返す可能性があります。
詳細と推奨事項
データストレージ
Join テーブルのデータは常に RAM 上にあります。テーブルに行を挿入するとき、ClickHouse はデータブロックをディスク上のディレクトリに書き込み、サーバーの再起動時にそれらを復元できるようにします。
サーバーが異常終了したり正しくない手順で再起動された場合、ディスク上のデータブロックが失われたり破損したりすることがあります。この場合、破損したデータを含むファイルを手動で削除する必要が生じることがあります。
データの選択と挿入
INSERT クエリを使用して、Join エンジンのテーブルにデータを追加できます。テーブルが ANY 厳密度で作成されている場合、重複キーのデータは無視されます。ALL 厳密度では、すべての行が追加されます。
Join エンジンテーブルの主なユースケースは次のとおりです。
JOIN句の右側にテーブルを配置する。- joinGet 関数を呼び出し、辞書と同じ方法でテーブルからデータを抽出する。
データの削除
Join エンジンテーブルに対する ALTER DELETE クエリは、mutation として実装されています。DELETE mutation はフィルタ済みのデータを読み取り、メモリおよびディスク上のデータを上書きします。
制限事項と設定
テーブル作成時には、次の設定が適用されます。
join_use_nulls
max_rows_in_join
max_bytes_in_join
join_overflow_mode
join_any_take_last_row
join_use_nulls
Persistent
Join および Set テーブルエンジンの永続化を無効にします。
I/O オーバーヘッドを削減します。性能を重視し、永続化を必要としないシナリオに適しています。
設定可能な値:
- 1 — 有効。
- 0 — 無効。
デフォルト値: 1。
Join エンジンテーブルは GLOBAL JOIN 操作では使用できません。
Join エンジンでは、CREATE TABLE 文内で join_use_nulls 設定を指定できます。SELECT クエリでも同じ join_use_nulls の値を使用する必要があります。
使用例
左側テーブルの作成:
右側の Join テーブルを作成する:
テーブル結合:
代わりに、結合キーの値を指定して Join テーブルからデータを取得することもできます。
Join テーブルから行を削除する: