メモリテーブルエンジン
ClickHouse Cloud でメモリテーブルエンジンを使用する際、データはすべてのノードにレプリケートされません(設計上)。すべてのクエリが同じノードにルーティングされ、メモリテーブルエンジンが期待通りに機能することを保証するために、次のいずれかを行うことができます:
- 同じセッション内ですべての操作を実行する
- clickhouse-client のような TCP またはネイティブインターフェースを使用するクライアントを使用する(これによりスティッキー接続がサポートされます)
メモリエンジンは、データを RAM に圧縮されていない形式で保存します。データは、読み取る際に受け取ったのとまったく同じ形式で保存されます。言い換えれば、このテーブルからの読み取りは完全に無料です。 同時データアクセスは同期されます。ロックは短時間です:読み取りおよび書き込み操作は互いにブロックしません。 インデックスはサポートされていません。読み取りは並列化されます。
最大生産性(10 GB/秒を超える)は、ディスクからの読み取り、データの解凍、またはデシリアライズがないため、単純なクエリで達成されます。(多くの場合、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
- デフォルト値:
使い方
設定の初期化
設定の変更
注: bytes
と rows
の両方の制限パラメータは同時に設定できますが、max
と min
の下限は遵守されます。
例
行の場合も: