This post just shows you the commands to convert a table from MyISAM to InnoDB or from InnoDB to MyISAM. If you don’t know the differences between these storage engines, you probably shouldn’t be changing this.
(tl;dr: row/table locking and full text search behaves differently, on top of a couple of hundred other parameters. If you’re worried about performance, make sure to check innodb_buffer_pool_size (InnoDB) and key_buffer_size (MyISAM) before and after your changes)
Convert a table to MyISAM#
If you currently have a table in InnoDB and you’d like to convert it to MyISAM, use the following query. Please note that depending on the size of table, this can take a couple of seconds to a couple of hours to complete.
Consider running this in a screen and schedule downtime for your application.
$ mysql MySQL> USE your_database_name; MySQL> ALTER TABLE your_table_name ENGINE=MyISAM; Query OK, 5 rows affected (0.25 sec) Records: 5 Duplicates: 0 Warnings: 0
Convert a table to InnoDB#
Alternatively, to convert to InnoDB follow these steps.
$ mysql MySQL> USE your_database_name; MySQL> ALTER TABLE your_table_name ENGINE=InnoDB; Query OK, 5 rows affected (0.25 sec) Records: 5 Duplicates: 0 Warnings: 0
This can take a while, depending on the size of your database.
How to check your current storage engine per table#
Use the following query to see which storage engine your table us currently user. Each table in a database can use a different storage engine.
$ mysql MySQL> USE your_database_name; MySQL> SHOW CREATE TABLE your_table_name; CREATE TABLE `your_table_name` ( `name` varchar(20) DEFAULT NULL, ... ) ENGINE=InnoDB DEFAULT CHARSET=latin1
The last line will tell you which Engine that particular table is now using.
Need more reading material? Go for the official and well-documented explanation at dev.mysql.com: 14.5.4 Converting Tables from MyISAM to InnoDB .