デフォルトストレージエンジンに関する設定
MySQL では複数のストレージエンジンをサポートしています。ストレージエンジンとはテーブルにデータを書き込んだり読み出したりする部分を担っているプログラムのことで、現在の MySQL ではデフォルトのストレージエンジンは InnoDB になっています。ここでは MySQL で用意されているストレージエンジンの一覧を確認し、デフォルトで使用されるストレージエンジンに関する設定を記述する方法について解説します。
(Last modified: )
MySQLで利用可能なストレージエンジンの一覧
MySQL で利用可能なストレージエンジンの一覧を確認します。 MySQL コマンドラインツールを起動してください。
次のようにコマンドを実行してください。
show engines;
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';
+------------------------+--------+ | 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;
次にストレージエンジンを指定せずにテーブルを作成します。
create table test1(id int);
作成したテーブルのストレージエンジンを確認します。
show table status from mytest like 'test1'\G
Engine の値が InnoDB に設定されていることが確認できました。
なおストレージエンジンを明示的に指定してテーブルを作成するには次のように記述します。下記ではストレージエンジンとして MyISAM を指定しています。
create table test2(id int) engine MyISAM;
作成したテーブルのストレージエンジンを確認します。
show table status from mytest like 'test2'\G
Engine の値が MyISAM に設定されていることが確認できました。
デフォルトのストレージエンジンを変更する
それでは my.ini に設定を追加してデフォルトのストレージエンジンを変更します。 my.ini ファイルの [mysqld] グループの中の default-storage-engine オプションに対する値を MyISAM に変更してください。
[mysqld] default-storage-engine=MyISAM
設定ファイルを保存し MySQL サーバを再起動してください。これで設定変更は完了です。
それではストレージエンジンを指定せずにテーブルを作成します。
create table test3(id int);
作成したテーブルのストレージエンジンを確認します。
show table status from mytest like 'test3'\G
Engine の値が MyISAM に設定されていることが確認できました。このようにデフォルトのストレージエンジンが MyISAM に変更されていることが確認できました。
-- --
MySQ で用意されているストレージエンジンの一覧を確認し、デフォルトで使用されるストレージエンジンに関する設定を記述する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。