Memory Table Engine
ClickHouse CloudでMemoryテーブルエンジンを使用する際、データはすべてのノード間でレプリケーションされません(設計上)。すべてのクエリが同じノードにルーティングされ、Memoryテーブルエンジンが期待どおりに機能することを保証するために、次のいずれかを行うことができます:
- 同じセッション内ですべての操作を実行する
- clickhouse-client のようにTCPまたはネイティブインターフェースを使用するクライアントを使用する(これによりスティッキー接続がサポートされます)
MemoryエンジンはデータをRAMに非圧縮形式で保存します。データは読み取られるときに受け取ったままの形式で保存されます。言い換えれば、このテーブルからの読み取りは完全に無料です。 同時データアクセスは同期されます。ロックは短時間で済みます:読み取りと書き込みの操作は互いにブロックしません。 インデックスはサポートされていません。読み取りは並列処理されます。
最大の生産性(10GB/秒を超える)はシンプルなクエリで達成されます。これは、ディスクからの読み取り、データの解凍、またはデシリアライズがないためです。(多くのケースで、MergeTreeエンジンの生産性もほぼ同じくらい高いことに注意する必要があります。) サーバーを再起動すると、データはテーブルから消え、テーブルは空になります。 通常、このテーブルエンジンの使用は正当化されません。しかし、テストや相対的に少数の行(約100,000,000行まで)で最大の速度が必要なタスクには使用することができます。
Memoryエンジンは、外部クエリデータを使用した一時テーブルにシステムによって使用されます(「クエリの処理のための外部データ」セクションを参照)およびGLOBAL IN
を実装するために使用されます(「IN演算子」セクションを参照)。
Memoryエンジンのテーブルサイズを制限するために上限と下限を指定でき、効果的に円形バッファとして機能します(エンジンパラメータを参照)。
Engine Parameters
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
- デフォルト値:
Usage
設定の初期化
設定の変更
注意: bytes
とrows
の制限パラメータは同時に設定できますが、max
とmin
の下限は遵守されます。
Examples
さらに、行に関して: