MyISAMとInnoDBの違いとは?MySQLのストレージエンジンを確認・変更する方法
MyISAMとInnoDBはどちらもストレージエンジン
MyISAMとInnoDBは、MySQLに搭載されている代表的なストレージエンジン(テーブルタイプ)です。それぞれ特徴が異なり、InnoDBはトランザクション処理や行レベルロックに対応している一方、MyISAMはシンプルで高速な読み取り性能が特徴です。
ここでは、現在データベース内のテーブルがどのエンジンを使用しているのかを確認する方法と、エンジンの種類を変更する方法をご紹介します。
使用中のデータベースを選択する
まず、USEコマンドを使って対象のデータベースを選択します。
mysql> USE business; Database changed
これで「business」データベースが選択されました。
SHOW TABLE STATUSでエンジンを確認する
次に、以下のクエリを実行すると、各テーブルがどのエンジンを使用しているかを一覧で確認できます。
mysql> SHOW TABLE STATUS;
実行結果の例は次のとおりです。
+---------------------+--------+---------+------------+------+----------------+-------------+ | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | +---------------------+--------+---------+------------+------+----------------+-------------+ | addcolumntable | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | | autoincrement | InnoDB | 10 | Dynamic | 4 | 4096 | 16384 | | autoincrementtable | InnoDB | 10 | Dynamic | 5 | 3276 | 16384 | | bookindexes | InnoDB | 10 | Dynamic | 4 | 4096 | 16384 | | chardemo | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | | clonestudent | InnoDB | 10 | Dynamic | 3 | 5461 | 16384 | | columnvaluenulldemo | InnoDB | 10 | Dynamic | 2 | 8192 | 16384 | | dateadddemo | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | | deletedemo | InnoDB | 10 | Dynamic | 5 | 3276 | 16384 | | deleterecord | InnoDB | 10 | Dynamic | 6 | 2730 | 16384 | +---------------------+--------+---------+------------+------+----------------+-------------+
この出力結果を見ると、MySQL 8.0.12環境ではすべてのテーブルがInnoDBエンジンを使用していることがわかります。MySQL 5.5以降、InnoDBがデフォルトのストレージエンジンとなっているためです。
エンジンをMyISAMへ変更する方法
既存のテーブルのエンジンをInnoDBからMyISAMへ変更したい場合は、ALTER TABLE文を使用します。
複数のテーブルをまとめて変更したい場合などには、Information_schema.TABLESから対象テーブルの一覧とALTER文を自動生成することもできます。以下がそのクエリ例です。
mysql> SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME,
-> ' ENGINE=MyISAM;')
-> FROM Information_schema.TABLES
-> WHERE TABLE_SCHEMA = 'sample' AND ENGINE = 'InnoDB'
-> AND TABLE_TYPE = 'mytable';
Empty set (0.05 sec)この例では条件に合致するテーブルが存在しないため「Empty set」が返されていますが、該当するテーブルがあれば、そのテーブル用のALTER文が出力されます。生成されたSQLを実行すれば、エンジンの切り替えが完了します。
まとめ
- MyISAMとInnoDBは、いずれもMySQLのストレージエンジンである
SHOW TABLE STATUSで各テーブルの使用エンジンを確認できる- MySQL 8.0系ではデフォルトでInnoDBが使用される
ALTER TABLE ... ENGINE=MyISAM;でエンジンの変更が可能
-
MySQLテーブルがMyISAMまたはInnoDBエンジンを使用しているか確認する方法
MySQLテーブルのストレージエンジンを確認するには? MySQLでテーブルがMyISAMまたはInnoDBのどちらのストレージエンジンを使用しているかを確認したい場合、SHOW TABLE STATUSコマンドを使うのが最も手軽な方法です。このコマンドを実行すると、エンジンの種類だけでなく、行数や作成日時、照合順序など、テーブルに関する詳細情報を一度に取得できます。 基本構文 SHOW TABLE STATUS FROM データベース名 LIKE テーブル名; 上記の構文では、指定したデータベース内の特定のテーブルに関する情報が表示されます。Engine列の値を確認することで、そのテーブル
-
MySQLではInnoDBはデフォルトで有効になっている?ストレージエンジンの確認方法を解説
MySQLにおけるInnoDBのデフォルト設定 はい、MySQLではInnoDBはデフォルトで有効になっています。特にMySQL 5.5以降ではInnoDBが標準のストレージエンジンとして採用されているため、CREATE文で明示的に指定しなくても自動的にInnoDBが使用されます。 ここでは、MySQL 8.0の環境を使って実際に確認していきましょう。まずは現在使用中のバージョンをチェックします。 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1