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

メモリテーブルエンジン

注記

ClickHouse Cloudでメモリテーブルエンジンを使用する場合、データは全ノード間でレプリケートされません(設計上の理由)。すべてのクエリが同じノードにルーティングされ、メモリテーブルエンジンが期待通りに動作することを保証するには、以下のいずれかを行うことができます:

  • 同じセッション内で全ての操作を実行する
  • clickhouse-clientなどのTCPまたはネイティブインターフェースを使用するクライアントを使用する(スティッキーコネクションのサポートを有効にします)

メモリエンジンはデータをRAMに非圧縮の形で保存します。データは読み取られる際に受け取った時と全く同じ形で保存されます。言い換えれば、このテーブルからの読み取りは完全に無料です。
同時データアクセスは同期されています。ロックは短く、読み取りと書き込みの操作は互いをブロックしません。
インデックスはサポートされていません。読み取りは並行化されています。

最大の生産性(10 GB/sec以上)は単純なクエリで達成されます。なぜなら、ディスクからの読み取り、データの解凍、またはデシリアライズがないからです。(多くの場合、MergeTreeエンジンの生産性はほぼ同じくらい高いことに注意が必要です。)
サーバーを再起動すると、テーブルからデータが消失し、テーブルは空になります。
通常、このテーブルエンジンの使用は正当化されません。しかし、テストや相対的に少数の行(約100,000,000行まで)で最大速度が必要なタスクに使用することができます。

メモリエンジンは、外部クエリデータのための一時テーブル(「クエリ処理のための外部データ」セクションを参照)や GLOBAL IN の実装にシステムによって使用されます(「IN演算子」セクションを参照)。

メモリエンジンテーブルのサイズを制限するために上下限を指定することができ、実質的に円環バッファとして機能させることができます(エンジンパラメータを参照)。

エンジンパラメータ

  • min_bytes_to_keep — メモリテーブルがサイズ制限されている場合に保持する最小バイト数。
    • デフォルト値: 0
    • max_bytes_to_keep を必要とする
  • max_bytes_to_keep — 最新の行が各挿入時に削除されるメモリテーブル内の最大バイト数(つまり、円環バッファ)。最大バイト数は、大きなブロックを追加する際に削除する最古の行のバッチが min_bytes_to_keep 制限を下回る場合、指定された制限を超えることがあります。
    • デフォルト値: 0
  • min_rows_to_keep — メモリテーブルがサイズ制限されている場合に保持する最小行数。
    • デフォルト値: 0
    • max_rows_to_keep を必要とする
  • max_rows_to_keep — 最新の行が各挿入時に削除されるメモリテーブル内の最大行数(つまり、円環バッファ)。最大行数は、大きなブロックを追加する際に削除する最古の行のバッチが min_rows_to_keep 制限を下回る場合、指定された制限を超えることがあります。
    • デフォルト値: 0
  • compress - メモリ内のデータを圧縮するかどうか。
    • デフォルト値: false

使用法

設定を初期化する

設定を変更する

注: bytesrows の制限パラメータは同時に設定することが可能ですが、maxmin の下限は遵守されます。

行に関しても: