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の統計情報を表示します:
構成
次のようにconfigを使用して任意の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
に設定されると、可能な場合に直接ジョインが使用され、そうでなければハッシュが使用されます。