MySQL-如何快速转换mysql表的存储类型?
对于一个数据量很大的表,需要转换一下表的存储类型,有什么高效的办法?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
对于一个数据量很大的表,需要转换一下表的存储类型,有什么高效的办法?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
1:alter table 表名 ENGINE= 引擎
2:建立一个你要转换的引擎空表,将老表数据导过去
mysql_convert_table_format
官方介绍:http://dev.mysql.com/doc/refman/5.1/en/mysql-convert-table-format.html
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的方式则不行。