mysql轉換表的存儲引擎方法

若是轉換表的存儲引擎,將會丟失原存儲引擎的全部特性。mysql

例如:若是將innodb轉換成myisam,再轉回innodb,原innodb表的的外鍵將丟失。sql

 

假設默認存儲引擎是MyISAM轉爲InnoDBcode

第一種:使用ALTER TABLE實現事務

 

mysql>ALTER TABLE table_name ENGINE=InnoDB;

適合任何存儲引擎間的轉換。須要執行很長時間。按行從數據將原表複製到一個新表,特別消耗系統I/O能力,而且原表會加上讀鎖。繁忙的表上慎用。it

 

 

第二種:mysqldump導出與導入實現io

 

mysql>mysqldump -uroot -p db_name tb_name > db_tb_name.sql;

修改db_tb_name.sql文件內engine爲InnoDB和表名。注意去掉sql文件中的DROP TABLE命令,以避免刪除原表。innodb

 

 

[root@localhost ~]#mysql -uroot -p db_name < db_tb_name.sql

 

第三種:建立與查詢實現table

 

mysql>create table db_innodb like db_myisam;
mysql>alter table db_innodb engine=innodb;
mysql>insert into db_innodb select * from db_myisam;

若是數據量很大能夠再insert的時候分批導入,結合事務以下:class

 

mysql>start transaction;
mysql>insert into db_innodb select * from db_myisam where id>0 limit 1000;
mysql>insert into db_innodb select * from db_myisam where id>1000 limit 1000;
mysql>insert into db_innodb select * from db_myisam where id>2000 limit 1000;
mysql>commit;

x表示起始id值。修改x值並重復執行以上語句便可。select

相關文章
相關標籤/搜索