MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  代替ストレージエンジン  /  ストレージエンジンの設定

16.1 ストレージエンジンの設定

新しいテーブルを作成するときに、ENGINE テーブルオプションを CREATE TABLE ステートメントに加えることによって、どのストレージエンジンを利用するかを指定できます。

-- ENGINE=INNODB not needed unless you have set a different
-- default storage engine.
CREATE TABLE t1 (i INT) ENGINE = INNODB;
-- Simple table definitions can be switched from one to another.
CREATE TABLE t2 (i INT) ENGINE = CSV;
CREATE TABLE t3 (i INT) ENGINE = MEMORY;

ENGINE オプションを省略した場合、デフォルトのストレージエンジンが使用されます。 デフォルトのエンジンは MySQL 8.0 の InnoDB です。 デフォルトのエンジンを指定するには、--default-storage-engine サーバースタートアップオプションを使用するか、my.cnf 構成ファイルにある default-storage-engine オプションを設定するかします。

現在のセッションにデフォルトのストレージエンジンを設定するには、default_storage_engine 変数を設定します。

SET default_storage_engine=NDBCLUSTER;

CREATE TEMPORARY TABLE で作成された TEMPORARY テーブルのストレージエンジンは、起動時または実行時に default_tmp_storage_engine を設定することによって、永続テーブルのエンジンとは別に設定できます。

テーブルを別のストレージエンジンに変換するには、新しいエンジンを指定する ALTER TABLE ステートメントを使用します。

ALTER TABLE t ENGINE = InnoDB;

セクション13.1.20「CREATE TABLE ステートメント」およびセクション13.1.9「ALTER TABLE ステートメント」を参照してください。

コンパイルされていないストレージエンジン、またはコンパイルされているが無効化されたストレージエンジンを使用する場合、MySQL はその代わりに、デフォルトのストレージエンジンを使用してテーブルを作成します。 たとえば、レプリケーション設定では、おそらくソースサーバーは安全性を最大化するために InnoDB テーブルを使用しますが、レプリカサーバーは永続性または同時実行性を犠牲にして速度を高めるために他のストレージエンジンを使用します。

デフォルトでは、CREATE TABLE または ALTER TABLE がデフォルトのストレージエンジンを使用できない場合は、常に警告が生成されます。 目的のエンジンが使用できない場合に、混乱を起こす意図しない動作をしないようにするには、NO_ENGINE_SUBSTITUTION SQL モードを有効にします。 目的のエンジンが使用できない場合、この設定によって、警告の代わりにエラーが起こり、テーブルが作成されたり変更されたりしません。 セクション5.1.11「サーバー SQL モード」を参照してください。

MySQL では、ストレージエンジンに応じて、テーブルのインデックスおよびデータを他の 1 つ以上のファイルに格納できます。 テーブルおよびカラムの定義は、MySQL データディクショナリに格納されます。 個々のストレージエンジンは、それらが管理するテーブルに必要なファイルをさらに作成します。 テーブル名に特殊文字が含まれている場合は、セクション9.2.4「識別子とファイル名のマッピング」で説明されているように、その文字のエンコードされたバージョンがテーブルファイルの名前に含まれます。


関連キーワード:  エンジン, ストレージ, テーブル, 設定, TABLE, 作成, CREATE, リファレンス, FEDERATED, InnoDB