Mysql不同存儲(chǔ)引擎的表轉(zhuǎn)換方法
1、Alter table 直接修改表的存儲(chǔ)引擎,,但是這樣會(huì)導(dǎo)致大量的系統(tǒng)開銷,,Mysql為此要執(zhí)行一個(gè)就表向新表的逐行復(fù)制。在此期間,,轉(zhuǎn)換操作可能會(huì)占用服務(wù)器的所有I/O處理能力,。轉(zhuǎn)換表之后,原先引擎的特殊性質(zhì)都會(huì)丟失,,無法復(fù)原,。 2、轉(zhuǎn)儲(chǔ)和導(dǎo)入方法 用提供的mysqldump工具,,可以將原有的表轉(zhuǎn)換為一個(gè)文本文件,,然后修改該文件,將里面的create table語句的引擎選項(xiàng)修改為需要更改后的引擎,。 3,、創(chuàng)建一個(gè)新的表,并把舊表中的數(shù)據(jù)導(dǎo)入新的表
create table innodb_table like myisam_table ;
alter table innodb_table engine=innodb;
insert into innodb_table select * from myisam_table;
drop myisam_table;
|
以上方法適合數(shù)據(jù)量不大的情況,,如果數(shù)據(jù)量很大的話,,可能會(huì)產(chǎn)生大量的 undo log 日志,為了避免undo log過于龐大,,可以逐段進(jìn)行復(fù)制;
start transaction ;
insert into innodb_table select * from myisam_table where id between x and y; #逐次增大x和y的值
commit ;
|
參考書籍:《高性能mysql》
|