メインコンテンツまでスキップ
メインコンテンツまでスキップ

EmbeddedRocksDB エンジン

Not supported in ClickHouse Cloud

このエンジンは 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_algorithmdirect, hash に設定されると、可能な場合はダイレクトジョインが使用され、それ以外はハッシュが使用されます。

EmbeddedRocksDB テーブルを作成してデータを挿入する
テーブル rdb と結合するために別のテーブルを作成してデータを挿入する
ジョインアルゴリズムを direct に設定
INNER JOIN

ジョインに関する詳細情報