デフォルトストレージエンジンに関する設定

MySQL では複数のストレージエンジンをサポートしています。ストレージエンジンとはテーブルにデータを書き込んだり読み出したりする部分を担っているプログラムのことで、現在の MySQL ではデフォルトのストレージエンジンは InnoDB になっています。ここでは MySQL で用意されているストレージエンジンの一覧を確認し、デフォルトで使用されるストレージエンジンに関する設定を記述する方法について解説します。

(Last modified: )

MySQLで利用可能なストレージエンジンの一覧

MySQL で利用可能なストレージエンジンの一覧を確認します。 MySQL コマンドラインツールを起動してください。

MySQLで利用可能なストレージエンジンの一覧(1)

次のようにコマンドを実行してください。

show engines;

MySQLで利用可能なストレージエンジンの一覧(2)

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| ndbinfo            | NO      | MySQL Cluster system information storage engine                | NULL         | NULL | NULL       |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| ndbcluster         | NO      | Clustered, fault-tolerant tables                               | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
11 rows in set (0.01 sec)

以前はデフォルトのストレージエンジンとして MyISAM が使用されていましたが、現在は InnoDB がデフォルトのストレージエンジンです。

なおデフォルトストレージエンジンは次のように確認することもできます。

show variables like 'default_storage_engine';

MySQLで利用可能なストレージエンジンの一覧(3)

+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set, 1 warning (0.01 sec)

デフォルトのストレージエンジンが使用されるか確認する

MySQL のデフォルトのストレージエンジンについては設定ファイルである my.ini ファイルで設定します。 [mysql] グループで default-storage-engine に対して値を設定します。

[mysqld]
default-storage-engine=デフォルトストレージエンジン

現在 my.ini ファイルではこの設定項目について default-storage-engine=INNODB の設定が行われています。そのため、デフォルトのストレージエンジンは InnoDB が使用されます。(明示的に指定しなかった場合も InnoDB となります)。

[mysqld]
# The default storage engine that will be used when create new tables when
default-storage-engine=INNODB

テーブルを作成するときに明示的に使用するストレージエンジンを指定した場合はそのストレージエンジンが使用されますが、明示的に指定しなかった場合はデフォルトのストレージエンジンが使用されます。それでは実際にテスト用のデータベースをまず作成したあとで、実際にテーブルを作成してストレージエンジンが何になっているのかを確認してみます。

まずテスト用のデータベースを作成し、作成したデータベースに変更します。

create database mytest;
use mytest;

デフォルトのストレージエンジンが使用されるか確認する(1)

次にストレージエンジンを指定せずにテーブルを作成します。

create table test1(id int);

デフォルトのストレージエンジンが使用されるか確認する(2)

作成したテーブルのストレージエンジンを確認します。

show table status from mytest like 'test1'\G

デフォルトのストレージエンジンが使用されるか確認する(3)

Engine の値が InnoDB に設定されていることが確認できました。

なおストレージエンジンを明示的に指定してテーブルを作成するには次のように記述します。下記ではストレージエンジンとして MyISAM を指定しています。

create table test2(id int) engine MyISAM;

デフォルトのストレージエンジンが使用されるか確認する(4)

作成したテーブルのストレージエンジンを確認します。

show table status from mytest like 'test2'\G

デフォルトのストレージエンジンが使用されるか確認する(5)

Engine の値が MyISAM に設定されていることが確認できました。

デフォルトのストレージエンジンを変更する

それでは my.ini に設定を追加してデフォルトのストレージエンジンを変更します。 my.ini ファイルの [mysqld] グループの中の default-storage-engine オプションに対する値を MyISAM に変更してください。

[mysqld]
default-storage-engine=MyISAM

デフォルトのストレージエンジンを変更する(1)

設定ファイルを保存し MySQL サーバを再起動してください。これで設定変更は完了です。

それではストレージエンジンを指定せずにテーブルを作成します。

create table test3(id int);

デフォルトのストレージエンジンを変更する(2)

作成したテーブルのストレージエンジンを確認します。

show table status from mytest like 'test3'\G

デフォルトのストレージエンジンを変更する(3)

Engine の値が MyISAM に設定されていることが確認できました。このようにデフォルトのストレージエンジンが MyISAM に変更されていることが確認できました。

-- --

MySQ で用意されているストレージエンジンの一覧を確認し、デフォルトで使用されるストレージエンジンに関する設定を記述する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。