Log エンジンファミリー
これらのエンジンは、多くの小さなテーブル(約100万行まで)をすばやく書き込み、後で全体として読む必要があるシナリオのために開発されました。
ファミリーのエンジン:
Logファミリーのテーブルエンジンは、HDFSやS3の分散ファイルシステムにデータを保存できます。
共通のプロパティ
エンジンの特徴:
データをディスクに保存します。
データをファイルの末尾に追加して書き込みます。
同時データアクセス用のロックをサポートします。
INSERTクエリの間、テーブルはロックされ、他の読み書きクエリはテーブルがアンロックされるのを待ちます。データ書き込みのクエリがない場合、任意の数のデータ読み取りクエリを並行して実行できます。ミューテーションをサポートしません。
インデックスをサポートしません。
これにより、データ範囲の
SELECTクエリは効率的ではありません。データをアトミックに書き込みません。
たとえば、サーバーの異常終了などで書き込み操作が中断されると、データが破損したテーブルが得られる可能性があります。
差異
TinyLogエンジンは、ファミリー内で最もシンプルで、機能と効率が最も低いです。TinyLogエンジンは、単一クエリで複数のスレッドによる並行データ読み取りをサポートしません。単一のクエリから並行読み取りをサポートする他のエンジンよりもデータを読むのが遅く、各カラムを別々のファイルに保存するため、Logエンジンとほぼ同じ数のファイルディスクリプタを使用します。簡単なシナリオでのみ使用してください。
LogおよびStripeLogエンジンは並行データ読み取りをサポートしています。データを読み取る際、ClickHouseは複数のスレッドを使用し、各スレッドは別々のデータブロックを処理します。Logエンジンはテーブルの各カラムに対して別々のファイルを使用します。一方、StripeLogはすべてのデータを1つのファイルに格納します。その結果、StripeLogエンジンは使用するファイルディスクリプタが少なくなりますが、Logエンジンの方がデータ読み取りの効率が高くなります。