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

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

(2021 年 07 月 13 日公開 / 2021 年 07 月 13 日更新)

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

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

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

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

show engines;

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

EngineSupportCommentTransactionsXASavepoints
MEMORYYESHash based, stored in memory, useful for temporary tablesNONONO
MRG_MYISAMYESCollection of identical MyISAM tablesNONONO
CSVYESCSV storage engineNONONO
FEDERATEDNOFederated MySQL storage engineNULLNULLNULL
PERFORMANCE_SCHEMAYESPerformance SchemaNONONO
MyISAMYESMyISAM storage engineNONONO
InnoDBDEFAULTSupports transactions, row-level locking, and foreign keysYESYESYES
BLACKHOLEYES/dev/null storage engine (anything you write to it disappears)NONONO
ARCHIVEYESArchive storage engineNONONO

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

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

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

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

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

create table test3(id int);

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

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

show table status from mytest like 'test3'\G

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

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

-- --

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

( Written by Tatsuo Ikura )

参考になりましたらシェアをお願いします
関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。