明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

MySQL選擇合適的引擎及引擎轉(zhuǎn)換的詳細說明

[摘要]我們怎么選擇合適的引擎?這里簡單歸納一句話:“除非需要用到某些InnoDB不具備的特性,并且沒有其他辦法可以替代,否則都應(yīng)該優(yōu)先選擇InnoDB引擎。” 除非萬不得已,否則不建議混合使用多種存儲...
我們怎么選擇合適的引擎?這里簡單歸納一句話:“除非需要用到某些InnoDB不具備的特性,并且沒有其他辦法可以替代,否則都應(yīng)該優(yōu)先選擇InnoDB引擎。

除非萬不得已,否則不建議混合使用多種存儲引擎,否則可能帶來一系列復(fù)雜的問題以及一些潛在的BUG。

使用不同引擎考慮的幾大因素:

1.事務(wù)

如果需要事務(wù)支持,那么InnoDB或者XtraDB目前最穩(wěn)定。如果不需要事務(wù)且主要是SELECT和INSERT操作,MyISAM是不錯的選擇。

2.備份

如果需要在線熱備份,InnoDB是基本的選擇。

3.崩潰恢復(fù)

數(shù)據(jù)量比較大的時候,系統(tǒng)崩潰后如何快速恢復(fù)是一個需要考慮的問題,這也是許多人即使不需要事務(wù)支持也選擇InnoDB的原因。

轉(zhuǎn)換表的引擎:

1.ALTER TABLE

最簡單的方法就是ALTER TABLE語句: mysql> ALTER TABLE mytable ENGINE = InnoDB;

這個語法適用于任何存儲引擎,但是需要執(zhí)行很長的時間。

轉(zhuǎn)換表的存儲引擎,將會失去和原引擎相關(guān)的所有特性。

2.導(dǎo)出與導(dǎo)入

可以使用mysqldump工具將數(shù)據(jù)導(dǎo)出到文件,然后修改文件中CREATE TABLE語句的存儲引擎,請注意修改表名。

同時請注意mysqldump工具默認會自動在CREATE TABLE語句前加上DROP TABLE語句,小心數(shù)據(jù)丟失。

3.創(chuàng)建與查詢

綜合第一種與第二種,先創(chuàng)建一個新的存儲引擎表,然后利用INSTER ... SELECT語法來導(dǎo)數(shù)據(jù)

 mysql> CREATE TABLE innodb_table LIKE myisam_table;
       mysql>ALTER TABLE innodb_table ENGINE=InnoDB;
       mysql>INSTER INTO innodb_table SELECT * FROM myisam_table;

數(shù)據(jù)量大的話可以分批處理,針對每一段數(shù)據(jù)執(zhí)行事務(wù)提交操作,避免大事務(wù)產(chǎn)生的undo。Percona Toolkit提供了一個pt-online-schema-change的工具,可以簡單,方便的執(zhí)行避免手工操作導(dǎo)致的失誤。

以上就是MySQL選擇合適的引擎及引擎轉(zhuǎn)換的詳解的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。