MySQL-如何快速转换mysql表的存储类型?

MySQL-如何快速转换mysql表的存储类型?

甜柠檬 发布于 2016-11-30 字数 75 浏览 1050 回复 3

对于一个数据量很大的表,需要转换一下表的存储类型,有什么高效的办法?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

甜柠檬 2017-10-20 3 楼

1:alter table 表名 ENGINE= 引擎
2:建立一个你要转换的引擎空表,将老表数据导过去

虐人心 2017-05-23 2 楼

mysql_convert_table_format

mysql_convert_table_format converts the tables in a database to use a particular storage engine (MyISAM by default)

官方介绍:http://dev.mysql.com/doc/refman/5.1/en/mysql-convert-table-format.html

归属感 2017-05-12 1 楼

MySQL 5.x 起,有自带PERL批量转换MYSQL的表的引擎的工具mysql_convert_table_format,直接转换有命令alter table 表名 ENGINE= 引擎,另外可以建立新表,将数据导过去,我补充几条在大数据量的时候转换表引擎的方法:
1.如果使用ALTER TABLE命令,对于MyISAM表,增大如下的变量可以加快ALTER TABLE的执行过程:

a. myisam_sort_buffer_size MySQL会在REPAIR TABLE索引排序或者使用ALTER TABLE/CREATE INDEX创建索引的时候申请缓冲的大小。

b. myisam_max_sort_file_size MySQL在使用REPAIR TABLE/ALTER TABLE/LOAD DATA重建MyISAM索引的时候允许申请的最大临时文件的大小,如果超过这个大小,MySQL将会使用很慢的key cache。

2.在数据量比较大的时候,采用dump data,建立一个新引擎的新表,然后再import data的方式来修改表引擎的方式,会比ALTER TABLE快很多,当然这要看具体的应用,因为ALTER TABLE的过程中,可以提供继续read, 而采用dump data的方式则不行。