MySQLテーブルのストレージエンジンを確認・変更する方法(InnoDB→MyISAMへの切り替え手順)
MySQLテーブルのストレージエンジンを確認する
まず、対象のテーブルがどのストレージエンジン(InnoDBまたはMyISAM)を使用しているのかを確認します。確認には、information_schema.tables の ENGINE カラムを利用するのが最も手軽です。
基本の構文は以下のとおりです。
SELECT ENGINE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'yourDatabaseName' AND TABLE_NAME = 'yourTableName';
サンプルテーブルを作成する
ここでは例として、「StudentInformations」という名前のテーブルを作成して説明します。
mysql> create table StudentInformations
-> (
-> StudentId int not null auto_increment,
-> StudentFirstName varchar(20),
-> StudentLastName varchar(20),
-> Primary Key(StudentId)
-> );
Query OK, 0 rows affected (0.57 sec)
現在のエンジン種類を調べる
上記の構文を使えば、そのテーブルがInnoDBなのかMyISAMなのかを判別できます。ここでは「test」データベースに対してクエリを実行してみましょう。
mysql> select engine from information_schema.tables
-> where table_schema = 'test'
-> and table_name = 'StudentInformations';
実行結果は次のとおりです。
+--------+ | ENGINE | +--------+ | InnoDB | +--------+ 1 row in set (0.05 sec)
この結果から、StudentInformationsテーブルが現時点でInnoDBを使用していることがわかります。
ALTER TABLEでストレージエンジンを変更する
テーブルのエンジンを変更するには、ALTER TABLE コマンドを使用します。任意のテーブルのエンジンを切り替える際の基本構文は次のとおりです。
ALTER TABLE yourTableName ENGINE = 'yourEngineName';
InnoDBからMyISAMへ変更する
それでは、実際にStudentInformationsテーブルのエンジンをInnoDBからMyISAMへ変更してみます。
mysql> alter table StudentInformations ENGINE = 'MyISAM'; Query OK, 6 rows affected (1.84 sec) Records - 6 Duplicates - 0 Warnings - 0
「6 rows affected」と表示されるのは、テーブル内に6件のレコードが存在しており、すべての行が新しいエンジン形式で再構築されたことを示しています。
変更が反映されたか確認する
テーブルが正しくInnoDBからMyISAMへ変換されたかどうかは、先ほどと同じクエリを再実行すれば確認できます。
mysql> select engine from information_schema.tables
-> where table_schema = 'test'
-> and table_name = 'StudentInformations';
出力結果が以下のように MyISAM となっていれば、エンジンの変更は正常に完了しています。
+--------+ | ENGINE | +--------+ | MyISAM | +--------+ 1 row in set (0.00 sec)
変更前に知っておきたいInnoDBとMyISAMの違い
エンジンを切り替える前に、それぞれの特性の違いを押さえておきましょう。
- InnoDB:トランザクション・外部キー制約・行レベルロックをサポートしており、データ整合性が求められる業務システムに適したエンジンです。
- MyISAM:トランザクションや外部キーには対応していませんが、読み取りが中心の用途では高速に動作し、フルテキストインデックスも利用できます。
なお、外部キー制約やトランザクションを利用しているテーブルをMyISAMへ変更すると、これらの機能が失われる点に注意してください。本番環境で作業する場合は、必ずバックアップを取得したうえで、テスト環境での検証を済ませてから実施することをおすすめします。
-
MySQLデータベース内の空のテーブルを確認する方法をわかりやすく解説
データベース内のテーブルが空かどうかを確認するには、テーブルから実際にレコードを抽出してみる必要があります。テーブルにデータが存在する場合はレコードが返され、空の場合は「Empty set(空のセット)」が返されます。ここからは、サンプルテーブルを使いながら具体的な手順を見ていきましょう。1. テーブルを作成するまず、CREATE TABLE文でテーブルを作成します。mysql> create table DemoTable(Id int, Name varchar(100), Age int); Query OK, 0 rows affected (0.80 sec)2. レコードを挿
-
MySQLテーブルのストレージエンジンを変更する方法
MySQLでは、ALTER TABLE文を使うことで、既存テーブルのストレージエンジンを簡単に変更できます。例えば、MyISAMで作成したテーブルをInnoDBに切り替えたい場合などに役立ちます。 基本構文 alter table yourTableName ENGINE=InnoDB; yourTableName の部分に対象となるテーブル名を指定し、ENGINE= の後ろに設定したいストレージエンジン名を記述します。 サンプルテーブルの作成 まず、MyISAMエンジンを使用したテーブルを作成してみましょう。 mysql> create table DemoTable &n