ログエンジンファミリー
これらのエンジンは、約 100 万行までの多くの小さなテーブルを迅速に書き込み、その後まとめて読み取る必要があるシナリオのために開発されました。
ファミリーのエンジン:
ログエンジン |
---|
StripeLog |
Log |
TinyLog |
Log
ファミリーのテーブルエンジンは、HDFS または S3 の分散ファイルシステムにデータを保存できます。
名前に反して、*ログテーブルエンジンはログデータのストレージを目的としていません。迅速に書き込む必要がある小さなボリュームのみに使用すべきです。
共通のプロパティ
エンジン:
-
ディスク上にデータを保存します。
-
書き込み時にファイルの終わりにデータを追加します。
-
同時データアクセスのためのロックをサポートします。
INSERT
クエリの間、テーブルはロックされ、他のデータの読み込みと書き込みのクエリはテーブルがアンロックされるのを待ちます。データ書き込みのクエリがない場合、任意の数のデータ読み込みのクエリを同時に実行できます。 -
ミューテーションをサポートしていません。
-
インデックスをサポートしていません。
これは、データの範囲に対する
SELECT
クエリが効率的でないことを意味します。 -
データを原子的に書き込みません。
書き込み操作を中断する何かが発生した場合、例えば異常なサーバーシャットダウンなど、破損したデータを含むテーブルを取得する可能性があります。
違い
TinyLog
エンジンはファミリーの中で最も簡単で、機能が最も貧弱で効率も最も低いです。TinyLog
エンジンは、単一のクエリ内で複数のスレッドによる並行データ読み込みをサポートしていません。他のエンジンと比べてデータを読み取る速度が遅く、各カラムを別々のファイルに保存するため、Log
エンジンとほぼ同数のファイル記述子を使用します。単純なシナリオでのみ使用してください。
Log
および StripeLog
エンジンは、並行データ読み込みをサポートしています。データを読み取る際、ClickHouseは複数のスレッドを使用します。各スレッドは別々のデータブロックを処理します。Log
エンジンはテーブルの各カラムごとに別々のファイルを使用します。一方、StripeLog
はすべてのデータを1つのファイルに保存します。その結果、StripeLog
エンジンは使用するファイル記述子が少なくて済みますが、Log
エンジンはデータを読み取る際により高い効率を提供します。