EmbeddedRocksDB エンジン
このエンジンは、ClickHouse を RocksDB と統合することを可能にします。
テーブルの作成
エンジンパラメータ:
ttl
- 値の有効期限。TTLは秒単位で受け付けられます。TTLが 0 の場合、通常の RocksDB インスタンスが使用されます (TTL なし)。rocksdb_dir
- 既存の RocksDB のディレクトリのパスまたは作成された RocksDB の宛先パス。指定されたrocksdb_dir
でテーブルを開きます。read_only
-read_only
が true に設定されている場合、読み取り専用モードが使用されます。TTL を持つストレージの場合、コンパクションはトリガーされず (手動または自動のどちらも)、期限切れのエントリは削除されません。primary_key_name
– カラムリスト内の任意のカラム名。primary key
は指定する必要があり、主キーには 1 つのカラムのみがサポートされています。主キーはrocksdb key
としてバイナリでシリアライズされます。- 主キー以外のカラムは、対応する順序で
rocksdb
値としてバイナリでシリアライズされます。 - キー
equals
またはin
フィルタリングを持つクエリは、rocksdb
からのマルチキーのルックアップに最適化されます。
エンジン設定:
optimize_for_bulk_insert
– テーブルはバルク挿入用に最適化されています (挿入パイプラインは SST ファイルを作成し、メムテーブルへの書き込みの代わりに rocksdb データベースにインポートします); デフォルト値:1
。bulk_insert_block_size
- バルク挿入によって作成される SST ファイルの最小サイズ (行数単位); デフォルト値:1048449
。
例:
メトリクス
system.rocksdb
テーブルもあり、rocksdb の統計情報を公開しています:
設定
任意の rocksdb オプション を設定を使用して変更することもできます:
デフォルトでは、単純な近似カウントの最適化はオフになっており、これが count()
クエリのパフォーマンスに影響を与える可能性があります。この最適化を有効にするには、optimize_trivial_approximate_count_query = 1
を設定します。また、この設定は EmbeddedRocksDB エンジンの system.tables
にも影響し、total_rows
および total_bytes
の近似値を表示するには設定をオンにしてください。
サポートされる操作
挿入
EmbeddedRocksDB
に新しい行が挿入されるとき、キーがすでに存在する場合、その値が更新され、存在しない場合は新しいキーが作成されます。
例:
削除
行は DELETE
クエリまたは TRUNCATE
を使用して削除できます。
更新
値は ALTER TABLE
クエリを使用して更新できます。主キーは更新できません。
ジョイン
EmbeddedRocksDB テーブルとの特別な direct
ジョインがサポートされています。
この直接ジョインは、メモリ上でハッシュテーブルを形成せず、EmbeddedRocksDB から直接データにアクセスします。
大規模なジョインでは、ハッシュテーブルが作成されないため、メモリ使用量が大幅に低下する場合があります。
直接ジョインを有効にするには:
join_algorithm
が direct, hash
に設定されている場合、可能な場合は直接ジョインが使用され、それ以外の場合はハッシュジョインが使用されます。