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

テーブルエンジン

テーブルエンジン(テーブルの種類)は以下を決定します:

  • データの保存方法と場所、書き込み先および読み込み先。
  • サポートされているクエリとその方法。
  • 同時データアクセス。
  • インデックスの使用(存在する場合)。
  • マルチスレッドリクエスト実行が可能かどうか。
  • データレプリケーションパラメータ。

エンジンファミリー

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 TABLEDESCRIBE TABLEクエリの結果にも表示されません。仮想カラムは読み取り専用であり、データを挿入することはできません。

仮想カラムからデータを選択するには、その名前をSELECTクエリで指定する必要があります。SELECT *は仮想カラムからの値を返しません。

同じ名前のカラムを持つテーブルを作成すると、仮想カラムがアクセスできなくなります。これを行うことはお勧めしません。競合を避けるために、仮想カラムの名前は通常アンダースコアで始まります。

  • _table — データが読み取られたテーブルの名前を含みます。タイプ: String

    使用されているテーブルエンジンにかかわらず、各テーブルには_tableという名前の普遍的な仮想カラムが含まれています。

    マージテーブルエンジンを持つテーブルをクエリするとき、WHERE/PREWHERE句で_tableに定数条件を設定できます(例:WHERE _table='xyz')。この場合、条件が満たされたテーブルに対してのみ読み取り操作が行われるため、_tableカラムはインデックスとして機能します。

    SELECT ... FROM (... UNION ALL ... ) のようにフォーマットされたクエリを使用する場合、戻された行が実際にどのテーブルから由来するのかを_tableカラムを指定することで判断できます。