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 ファイルを作成し、memtables に書き込む代わりに 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
に設定されると、可能な場合はダイレクトジョインが使用され、それ以外はハッシュが使用されます。