有很多种方法可以将表的存储引擎转换成另外一种引擎。每种方法都有其优 点和缺点。常用的有三种方法

ALTER TABLE

将表从一个引擎修改为另一个引擎最简单的办法是使用 ALTER TABLE 语句。
下面的语句将 mytable 的引擎修改为 InnoDB :

  • mysql> ALTER TABLE mytable ENGINE = InnoDB;

上述语法可以适用任何存储引擎。但需要执行很长时间,在实现上,MySQL 会按行将数据从原表复制到一张新的表中,在复制期间可能会消耗系统所有的 I/O 能力,同时原表上会加上读锁。所以,在繁忙的表上执行此操作要特别小心。 如果转换表的存储引擎,将会失去和原引擎相关的所有特性。

导出与导入

还可以使用 mysqldump 工具将数据导出到文件,然后修改文件中

CREATE TABLE

语句的存储引擎选项,注意同时修改表名,因为同一个数据库中不能存在 相同的表名,即使它们使用的是不同的存储引擎。 CREATE 和 SELECT 先创建一个新的存储引擎的表,然后利用 INSERT…SELECT 语法来导数据:
mysql>CREATE TABLE innodb_table LIKE myisam_table;
mysql>ALTER TABLE innodb_table ENGINE=InnoDB;
mysql>INSERT INTO innodb_table SELECT * FROM myisam_table;
如果数据量很大,则可以考虑做分批处理,针对每一段数据执行事务提交操 作。