メインコンテンツへスキップ
テーブルエンジン (テーブルの種類) は、次の内容を決定します。
  • データをどのように、どこに保存するか、どこに書き込むか、どこから読み取るか。
  • どのクエリがどのようにサポートされるか。
  • データへの同時アクセス。
  • 索引がある場合に、それを使用するかどうか。
  • リクエストをマルチスレッドで実行できるかどうか。
  • データレプリケーションのパラメータ。

エンジンファミリー

MergeTree

高負荷のワークロード向けに、最も汎用的で高機能なテーブルエンジンです。これらのエンジンに共通する特徴は、高速にデータを挿入でき、その後のデータ処理がバックグラウンドで行われることです。MergeTree ファミリーのエンジンは、データのレプリケーション (Replicated* バージョンのエンジン) 、パーティション化、セカンダリのデータスキッピング索引のほか、他のエンジンではサポートされない機能もサポートしています。 このファミリーに含まれるエンジン:

Log

最小限の機能を備えた軽量なエンジンです。多数の小さなテーブル (約 100 万行まで) にすばやく書き込み、後でまとめて読み取る必要がある場合に最適です。 このファミリーに属するエンジン:

インテグレーションエンジン

他のデータストレージシステムやデータ処理システムと連携するためのエンジンです。 このファミリーに属するエンジン:

特殊エンジン

このファミリーに含まれるエンジン:

仮想カラム

仮想カラムは、エンジンのソースコードで定義される、テーブルエンジンに組み込まれた属性です。 仮想カラムを CREATE TABLE クエリで指定することはできません。また、SHOW CREATE TABLEDESCRIBE TABLE クエリの結果にも表示されません。仮想カラムは読み取り専用でもあるため、仮想カラムにデータを挿入することもできません。 仮想カラムからデータを取得するには、SELECT クエリでその名前を明示的に指定する必要があります。SELECT * では仮想カラムの値は返されません。 テーブルの仮想カラムのいずれかと同じ名前のカラムを持つテーブルを作成すると、その仮想カラムにはアクセスできなくなります。これは推奨されません。競合を避けるため、仮想カラム名には通常、先頭にアンダースコアが付いています。
  • _table — データの読み取り元であるテーブル名を格納します。Type: String. 使用しているテーブルエンジンに関係なく、すべてのテーブルには _table という共通の仮想カラムがあります。 Merge テーブルエンジンを使用してテーブルにクエリする場合は、WHERE/PREWHERE 句で _table に対する定数条件を設定できます (たとえば WHERE _table='xyz') 。この場合、読み取り処理は _table の条件を満たすテーブルに対してのみ実行されるため、_table カラムは索引として機能します。 SELECT ... FROM (... UNION ALL ...) のような形式のクエリを使用すると、_table カラムを指定することで、返された行が実際にどのテーブルに由来するかを判別できます。
最終更新日 2026年6月10日