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

Log Engine Family

これらのエンジンは、多くの小さなテーブル(約100万行まで)を迅速に書き込み、その後全体として読み取る必要があるシナリオ向けに開発されました。

ファミリーのエンジン:

Log Engines
StripeLog
Log
TinyLog

Logファミリーのテーブルエンジンは、HDFSまたはS3の分散ファイルシステムにデータを保存できます。

このエンジンはログデータ用ではありません。

名前に反して、*Logテーブルエンジンはログデータの保存を目的としたものではありません。 迅速に書き込む必要がある小規模なボリュームにのみ使用するべきです。

Common Properties

エンジンの特性:

  • ディスクにデータを保存します。

  • 書き込み時にファイルの末尾にデータを追加します。

  • 同時データアクセスのためのロックをサポートしています。

    INSERTクエリの間、テーブルはロックされ、他のデータの読み書きクエリはテーブルのロック解除を待機します。データ書き込みクエリがない場合、任意の数のデータ読み込みクエリを同時に実行できます。

  • ミューテーションをサポートしていません。

  • インデックスをサポートしていません。

    これは、データの範囲に対するSELECTクエリが効率的でないことを意味します。

  • データを原子性で書き込みません。

    書き込み操作が破損した場合(例えば、異常なサーバーシャットダウン)、破損したデータを持つテーブルが得られる可能性があります。

Differences

TinyLogエンジンはファミリーの中で最も単純で、最も機能が限られ、効率が低いです。TinyLogエンジンは、単一のクエリ内で複数のスレッドによる並列データ読み込みをサポートしていません。データを読む速度は、単一のクエリからの並列読み込みをサポートしているファミリーの他のエンジンよりも遅く、各カラムを別々のファイルに保存するため、Logエンジンとほぼ同じ数のファイルディスクリプタを使用します。単純なシナリオでのみ使用してください。

LogおよびStripeLogエンジンは並列データ読み込みをサポートしています。データを読み取る際、ClickHouseは複数のスレッドを使用します。各スレッドは別々のデータブロックを処理します。Logエンジンはテーブルの各カラムに対して別々のファイルを使用します。StripeLogはすべてのデータを1つのファイルに保存します。その結果、StripeLogエンジンはファイルディスクリプタの数が少なくなりますが、データを読み込む際の効率はLogエンジンの方が高いです。