新しいテーブルを作成する時、ENGINE
テーブルオプションを CREATE TABLE
ステートメントに加える事によって、どのストレージエンジンを利用するかを指定できます。
CREATE TABLE t (i INT) ENGINE = INNODB;
ENGINE
か TYPE
オプションを省略すると、デフォルトのストレージエンジンが利用されます。通常、これは
MyISAM
ですが、--default-storage-engine
か --default-table-type
サーバー始動オプションを利用、またはmy.cnf
構造ファイルの中の
default-storage-engine
か
default-table-type
オプション
を設定する事で変更できます。
現在のセッションの途中で
storage_engine
変数を設定する事によって、利用するデフォルトストレージエンジンを設定する事ができます。
SET storage_engine=MYISAM;
MySQLコンフィギュレーションウィザードを利用してMySQLがWindowsにインストールされた時は、MyISAM
の代わりに
InnoDB
ストレージエンジンをデフォルトとして選択する事ができます。詳しくは項2.3.4.6. 「データベースの使用ダイアログ」を参照してください。
テーブルを別のストレージエンジンに変換するには、新しいエンジンを指示するALTER
TABLE
ステートメントを利用してください。
ALTER TABLE t ENGINE = MYISAM;
項12.1.8. 「CREATE TABLE
構文」と項12.1.2. 「ALTER TABLE
構文」を参照して下さい。
もし、編集されていないストレージエンジンや、編集はされていても無効になっているストレージエンジンを利用しようとすると、MySQLは代わりにデフォルトのストレージエンジンを利用しててテーブルを作成します。通常その時利用されるのはMyISAM
です。この機能は、別々のストレージエンジンをサポートするMySQLサーバー間でテーブルをコピーしたい時に便利です。(例えば、複製を設定する時、マスターサーバは安全の為トランザクションストレージエンジンをサポートするでしょう。しかし、スレーブサーバはスピードの為に、非トランザクションストレージエンジンだけを利用します。)
新しいMySQLユーザにとっては、利用不可デフォルトストレージエンジンの自動置換は複雑かもしれません。ストレージエンジンが自動的に変更された時は必ず、警告メッセージが表示されます。
テーブルとカラムの定義を維持する為に、MySQLは毎回新しいテーブルの為に
.frm
を作成します。ストレージエンジンによっては、テーブルのインデックスとデータは複数の別のファイルに格納されるでしょう。サーバーがストレージエンジンレベルの上位に
.frm
ファイルを作成します。個々のストレージエンジンは、それらが管理するテーブルが必要とする追加ファイルも作成します。もしテーブル名が特別な文字を含んでいる場合、そのテーブルファイルの名前は項8.2.3. 「ファイル名への識別子のマッピング」に表されているようにそれらの文字が暗号化された形を含んだ物になります。
データベースは異なるタイプのテーブルを含む事があります。これは、テーブルが同じストレージエンジンで作成されなくても良い事を表しています。