MySQL数据库引擎的转换,怎样查看所有存储引擎

Yanyan 304 2023-11-24

MySQL数据库引擎的转换

MySQL 5.1 之前的版本,MyISAM是默认的存储引擎,后来的版本都改成了InnoDB引擎,有时候需要根据业务的特点在这两个引擎之间进行转换。

1、查看当前MySQL数据库的默认引擎

mysql> show engines;

1700798617616.png

2、能看出当前默认的存储引擎是InnoDB,还有MyISAM引擎也是经常会用的一种存储引擎。

3、要转换已经有数据的表的存储引擎,主要有三种方法:

一种是直接用alter命令转换

一种是mysqldump导出,修改存储引擎后,再导入

一种是创建一个新表,再用insert...select导入数据

4、直接用alter命令转换

先查询表的存储引擎

mysql> show create table test;

1700798631466.png

5、可以看出,test这个表的存储引擎为InnoDB,现在我们把test这个表强制转换成MyISAM引擎

mysql> alter table test engine=myisam;

1700798647987.png

6、如果数据量较大,这种方法会需要花比较长的时间,而且在转换的过程中,原表会加上读锁。

7、mysqldump导出,修改存储引擎后,再导入

先用mysqldump命令导出,再修改导出文件里面的存储引擎信息,然后再导入。在导入前,需要对原表进行删除或者改名才行。

# mysqldump -uroot -p --databases haibing --tables test > test_table.sql

1700798671506.png

8、编辑导出的文件,修改里面的存储引擎

# vim test_table.sql

1700798696292.png

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

1700798716170.png

10、导入前,我们先修改原先的表名,因为一个数据库中不能有重名的表。

mysql> alter table test rename to old_test;

修改完原先的表名,导入前面修改的文件

mysql > source test_table.sql

1700798735484.png

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;

如果确认没问题的话,可以删除旧表,再把新表改名。

1700798752333.png

怎样在mysql数据库查看所有存储引擎

1、怎样在mysql数据库查看所有存储引擎,如图:

使用命令:show engines;

1700798781835.png

2、或者查看可用的存储引擎:

使用命令:show variables like 'storage_engine';

如图:

1700798814549.png


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:什么是MySQL 分库分表?
下一篇:什么是Aurora替换?
相关文章