テーブルエンジン
テーブルエンジン(テーブルの種類)は以下を決定します:
- データの保存方法と場所、書き込み先および読み込み先。
- サポートされているクエリとその方法。
- 同時データアクセス。
- インデックスの使用(存在する場合)。
- マルチスレッドリクエスト実行が可能かどうか。
- データレプリケーションパラメータ。
エンジンファミリー
MergeTree
高負荷タスクに最も汎用的で機能的なテーブルエンジンです。これらのエンジンに共通する特性は、迅速なデータ挿入とその後のバックグラウンドデータ処理です。 MergeTree
ファミリーのエンジンは、データレプリケーション(Replicated*バージョンのエンジン)、パーティショニング、セカンダリデータスキッピングインデックス、その他のエンジンではサポートされていない機能をサポートしています。
ファミリー内のエンジン:
MergeTree エンジン |
---|
MergeTree |
ReplacingMergeTree |
SummingMergeTree |
AggregatingMergeTree |
CollapsingMergeTree |
VersionedCollapsingMergeTree |
GraphiteMergeTree |
CoalescingMergeTree |
Log
最小機能を持つ軽量のエンジンです。大量の小さなテーブル(約100万行まで)を迅速に書き込み、後でそれらを全体として読む必要がある場合に最も効果的です。
ファミリー内のエンジン:
Log エンジン |
---|
TinyLog |
StripeLog |
Log |
統合エンジン
他のデータストレージおよび処理システムと通信するためのエンジンです。
ファミリー内のエンジン:
統合エンジン |
---|
ODBC |
JDBC |
MySQL |
MongoDB |
Redis |
HDFS |
S3 |
Kafka |
EmbeddedRocksDB |
RabbitMQ |
PostgreSQL |
S3Queue |
TimeSeries |
特殊エンジン
ファミリー内のエンジン:
特殊エンジン |
---|
Distributed |
Dictionary |
Merge |
Executable |
File |
Null |
Set |
Join |
URL |
View |
Memory |
Buffer |
External Data |
GenerateRandom |
KeeperMap |
FileLog |
仮想カラム
仮想カラムは、エンジンのソースコードで定義された不可欠なテーブルエンジン属性です。
CREATE TABLE
クエリで仮想カラムを指定することはできず、SHOW CREATE TABLE
やDESCRIBE TABLE
クエリの結果にも表示されません。仮想カラムは読み取り専用であり、データを挿入することはできません。
仮想カラムからデータを選択するには、その名前をSELECT
クエリで指定する必要があります。SELECT *
は仮想カラムからの値を返しません。
同じ名前のカラムを持つテーブルを作成すると、仮想カラムがアクセスできなくなります。これを行うことはお勧めしません。競合を避けるために、仮想カラムの名前は通常アンダースコアで始まります。
-
_table
— データが読み取られたテーブルの名前を含みます。タイプ: String。使用されているテーブルエンジンにかかわらず、各テーブルには
_table
という名前の普遍的な仮想カラムが含まれています。マージテーブルエンジンを持つテーブルをクエリするとき、
WHERE/PREWHERE
句で_table
に定数条件を設定できます(例:WHERE _table='xyz'
)。この場合、条件が満たされたテーブルに対してのみ読み取り操作が行われるため、_table
カラムはインデックスとして機能します。SELECT ... FROM (... UNION ALL ... )
のようにフォーマットされたクエリを使用する場合、戻された行が実際にどのテーブルから由来するのかを_table
カラムを指定することで判断できます。