MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのMyISAMテーブルをInnoDBストレージエンジンに変換する方法

MySQLでは、ALTER TABLEコマンドを使うことで、既存のMyISAMテーブルをInnoDBストレージエンジンへ簡単に変換できます。本記事では、MyISAMエンジンのテーブルを作成し、それをInnoDBに変換して結果を確認するまでの一連の手順を、実際の実行例とともに解説します。

1. MyISAMエンジンでテーブルを作成する

まず、練習用としてMyISAMエンジンを指定したテーブルを作成します。ENGINE=MyISAMオプションを付けてCREATE TABLE文を実行しましょう。

mysql> create table MyISAMToInnoDBDemo
   -> (
   -> id int,
   -> Name varchar(100)
   -> )ENGINE=MyISAM;
Query OK, 0 rows affected (0.19 sec)

Query OKが表示されれば、テーブルの作成は成功です。

2. テーブルのストレージエンジンを確認する

作成したテーブルが本当にMyISAMエンジンで作られているかどうかは、information_schema.TABLESテーブルを参照することで確認できます。

mysql> SELECT TABLE_NAME,ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'business' and ENGINE = 'MyISAM';

実行すると、MyISAMエンジンで作成されたテーブル一覧が表示されます。

+-------------------------+--------+
| TABLE_NAME              | ENGINE |
+-------------------------+--------+
| studentrecordwithmyisam | MyISAM |
+-------------------------+--------+
1 row in set (0.00 sec)

3. ALTER TABLEコマンドでInnoDBへ変換する

MyISAMからInnoDBへの変換は、ALTER TABLE ... ENGINE=InnoDBという構文ひとつで完了します。非常にシンプルですが、データ量が多いテーブルでは処理に時間がかかる点に注意してください。

mysql> alter table MyISAMToInnoDBDemo engine=InnoDB;
Query OK, 0 rows affected (1.65 sec)
Records: 0  Duplicates: 0  Warnings: 0

4. 変換結果を確認する

最後に、テーブルが正しくInnoDBへ変換されたかを再度information_schemaでチェックします。

mysql> SELECT TABLE_NAME,ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'test' and ENGINE = 'InnoDB';

以下のように、ENGINE列が「InnoDB」と表示されれば変換は成功です。

+--------------------+--------+
| TABLE_NAME         | ENGINE |
+--------------------+--------+
| myisamtoinnodbdemo | InnoDB |
+--------------------+--------+
1 row in set (0.00 sec)

変換時の注意点

  • トランザクション対応:InnoDBはACID準拠のトランザクションをサポートしており、MyISAMにはないロールバック機能が利用できるようになります。
  • 行レベルロック:MyISAMはテーブル単位のロックですが、InnoDBは行レベルロックを採用しているため、同時実行性能が向上します。
  • クラッシュリカバリ:InnoDBは自動クラッシュリカバリ機能を持つため、サーバ障害時のデータ復旧性が高まります。
  • 事前バックアップを推奨:大規模なテーブルの変換では時間がかかる場合があるため、実行前に必ずバックアップを取得しておきましょう。

このように、ALTER TABLEコマンド一行だけでMyISAMからInnoDBへの移行が可能です。トランザクションや外部キー制約が必要なアプリケーションでは、InnoDBへの統一を検討する価値は十分にあります。

  1. MySQLでInnoDBをインストールまたは有効化する方法

    MySQLでInnoDBストレージエンジンを有効にするには、設定ファイルmy.ini(Linux環境の場合はmy.cnf)を編集する必要があります。MySQL 8以降ではInnoDBがデフォルトなお、MySQL 8.0以降では、デフォルトのストレージエンジンとしてInnoDBが標準で採用されているため、通常は特別な設定を行わなくてもInnoDBを使用できます。現在の設定はmy.iniファイルで確認しましょう。デフォルトストレージエンジンを明示的に指定したい場合は、設定ファイルに以下のように記述します。[mysqld]default-storage-engine=InnoDBまた、サーバー側で現

  2. MySQLではInnoDBはデフォルトで有効になっている?ストレージエンジンの確認方法を解説

    MySQLにおけるInnoDBのデフォルト設定 はい、MySQLではInnoDBはデフォルトで有効になっています。特にMySQL 5.5以降ではInnoDBが標準のストレージエンジンとして採用されているため、CREATE文で明示的に指定しなくても自動的にInnoDBが使用されます。 ここでは、MySQL 8.0の環境を使って実際に確認していきましょう。まずは現在使用中のバージョンをチェックします。 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1