TinyLog
このエンジンはログエンジンファミリーに属します。ログエンジンやその違いの共通プロパティについては、Log Engine Familyを参照してください。
このテーブルエンジンは通常、書き込み一回の方法で使用されます:データを一度書き込んだ後、必要なだけ何度も読み取ります。たとえば、TinyLog
タイプのテーブルを中間データのために使用し、小さなバッチで処理することができます。ただし、多数の小さなテーブルにデータを保存することは非効率です。
クエリは単一のストリームで実行されます。言い換えれば、このエンジンは比較的小さなテーブル(約1,000,000行まで)を対象としています。多くの小さなテーブルがある場合、このテーブルエンジンを使用することは理にかなっています。なぜなら、Logエンジンよりも単純であり(オープンする必要のあるファイルが少ないため)、効率的だからです。
Characteristics
- 単純な構造: Logエンジンとは異なり、TinyLogはマークファイルを使用しません。これにより複雑さは減少しますが、大規模データセットに対するパフォーマンスの最適化が制限されます。
- 単一ストリームクエリ: TinyLogテーブル上のクエリは単一ストリームで実行されるため、通常1,000,000行までの比較的小さなテーブルに適しています。
- 小さなテーブルに対して効率的: TinyLogエンジンのシンプルさは、多くの小さなテーブルを管理する際に有利であり、Logエンジンと比較して必要なファイル操作が少なくて済みます。
Logエンジンとは異なり、TinyLogはマークファイルを使用しません。これにより複雑さは減少しますが、大規模データセットに対するパフォーマンスの最適化が制限されます。
テーブルの作成
CREATE TABLEクエリの詳細な説明を参照してください。
データの書き込み
TinyLog
エンジンはすべてのカラムを1つのファイルに保存します。各INSERT
クエリについて、ClickHouseはテーブルファイルの最後にデータブロックを追加し、カラムを1つずつ書き込みます。
各テーブルに対してClickHouseは以下のファイルを記述します:
<column>.bin
: 各カラムのデータファイル。シリアライズされ圧縮されたデータが含まれます。
TinyLog
エンジンはALTER UPDATE
およびALTER DELETE
操作をサポートしていません。
使用例
テーブルの作成:
データの挿入:
私たちは二つのINSERT
クエリを使用して、<column>.bin
ファイル内に二つのデータブロックを作成しました。
ClickHouseは単一のストリームを使用してデータを選択します。その結果、出力内の行ブロックの順序は、入力内の同じブロックの順序と一致します。たとえば: