Dictionary レイアウトの種類
Dictionary をメモリ内に格納する方法は複数あり、それぞれ CPU 使用量と RAM 使用量の間でトレードオフがあります。キャッシュ系レイアウトは、ウォームアップ済みのエントリが各サーバーのローカルにのみ保持され、サーバーの再起動時や置き換え時に失われるため、挿入時のエンリッチメントを確実に行う用途には適していません。ClickHouse Cloud では、オートスケーリングやマネージドなノード置き換えにより、この状況がより発生しやすくなります。代わりに、データを完全にロードするレイアウトを使用してください。詳細は インジェストパスにおける cache Dictionary を参照してください。
Dictionary のレイアウトを指定する
Dictionary のレイアウトは、LAYOUT 句 (DDL の場合) または設定ファイル定義の layout 設定で指定できます。
- DDL
- 設定ファイル
完全な DDL 構文については、CREATE DICTIONARY も参照してください。 レイアウト名に
complex-key* を含まない Dictionary は UInt64 型のキーを持ち、complex-key* Dictionary は複合キー (複雑で、任意の型を持つキー) を持ちます。
数値キーの例 (カラム key_column は UInt64 型) :
- DDL
- 設定ファイル
複合キーの例 (キーは String 型の要素を 1 つ持ちます) :
- DDL
- 設定ファイル
Dictionary のパフォーマンスを向上させる
Dictionary のパフォーマンスを向上させる方法はいくつかあります。GROUP BYの後で、Dictionary を使用する関数を呼び出します。- 取得する属性を injective としてマークします。
異なるキーに異なる属性値が対応する場合、その属性は injective と呼ばれます。
そのため、
GROUP BYでキーから属性値を取得する関数を使用している場合、この関数は自動的にGROUP BYから除外されます。
- アクセスしている Dictionary を読み込めない。
cachedDictionary のクエリ時のエラー。