- データをどのように、どこに保存するか、どこに書き込むか、どこから読み取るか。
- どのクエリがどのようにサポートされるか。
- データへの同時アクセス。
- 索引がある場合に、それを使用するかどうか。
- リクエストをマルチスレッドで実行できるかどうか。
- データレプリケーションのパラメータ。
エンジンファミリー
MergeTree
MergeTree ファミリーのエンジンは、データのレプリケーション (Replicated* バージョンのエンジン) 、パーティション化、セカンダリのデータスキッピング索引のほか、他のエンジンではサポートされない機能もサポートしています。
このファミリーに含まれるエンジン:
Log
インテグレーションエンジン
特殊エンジン
仮想カラム
CREATE TABLE クエリで指定することはできません。また、SHOW CREATE TABLE や DESCRIBE TABLE クエリの結果にも表示されません。仮想カラムは読み取り専用でもあるため、仮想カラムにデータを挿入することもできません。
仮想カラムからデータを取得するには、SELECT クエリでその名前を明示的に指定する必要があります。SELECT * では仮想カラムの値は返されません。
テーブルの仮想カラムのいずれかと同じ名前のカラムを持つテーブルを作成すると、その仮想カラムにはアクセスできなくなります。これは推奨されません。競合を避けるため、仮想カラム名には通常、先頭にアンダースコアが付いています。
-
_table— データの読み取り元であるテーブル名を格納します。Type: String. 使用しているテーブルエンジンに関係なく、すべてのテーブルには_tableという共通の仮想カラムがあります。 Merge テーブルエンジンを使用してテーブルにクエリする場合は、WHERE/PREWHERE句で_tableに対する定数条件を設定できます (たとえばWHERE _table='xyz') 。この場合、読み取り処理は_tableの条件を満たすテーブルに対してのみ実行されるため、_tableカラムは索引として機能します。SELECT ... FROM (... UNION ALL ...)のような形式のクエリを使用すると、_tableカラムを指定することで、返された行が実際にどのテーブルに由来するかを判別できます。