MySQL数据库引擎的转换
1、查看当前MySQL数据库的默认引擎
mysql> show engines;

2、能看出当前默认的存储引擎是InnoDB,还有MyISAM引擎也是经常会用的一种存储引擎。
3、要转换已经有数据的表的存储引擎,主要有三种方法:
一种是直接用alter命令转换
一种是mysqldump导出,修改存储引擎后,再导入
一种是创建一个新表,再用insert...select导入数据
4、直接用alter命令转换
先查询表的存储引擎
mysql> show create table test;

5、可以看出,test这个表的存储引擎为InnoDB,现在我们把test这个表强制转换成MyISAM引擎
mysql> alter table test engine=myisam;

6、如果数据量较大,这种方法会需要花比较长的时间,而且在转换的过程中,原表会加上读锁。
7、mysqldump导出,修改存储引擎后,再导入
先用mysqldump命令导出,再修改导出文件里面的存储引擎信息,然后再导入。在导入前,需要对原表进行删除或者改名才行。
# mysqldump -uroot -p --databases haibing --tables test > test_table.sql

8、编辑导出的文件,修改里面的存储引擎
# vim test_table.sql

9、把其中的“ENGINE=MyISAM”改成“ENGINE=InnoDB”

10、导入前,我们先修改原先的表名,因为一个数据库中不能有重名的表。
mysql> alter table test rename to old_test;
修改完原先的表名,导入前面修改的文件
mysql > source test_table.sql

11、创建一个新表,再用insert...select导入数据
创建一个跟原先表结构一样的新表,然后在没有数据的情况下修改存储引擎,再用insert...select从旧表中导入新表中
创建一个跟旧表test结构一样的新表new_test
mysql> create table new_test like test;
修改新表的存储引擎
mysql > alter table new_test engine=myisam;
把旧表test中的数据导入到新表new_test中
mysql> insert into new_test select * from test;
如果确认没问题的话,可以删除旧表,再把新表改名。
