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

MySQL怎么選擇合適的引擎以及進(jìn)行引擎的轉(zhuǎn)換

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

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

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

1.事務(wù)

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

2.備份

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

3.崩潰恢復(fù)

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

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

1.ALTER TABLE

最簡(jiǎn)單的方法就是ALTER TABLE語(yǔ)句:

 mysql> ALTER TABLE mytable ENGINE = InnoDB;

這個(gè)語(yǔ)法適用于任何存儲(chǔ)引擎,但是需要執(zhí)行很長(zhǎng)的時(shí)間。

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

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

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

同時(shí)請(qǐng)注意mysqldump工具默認(rèn)會(huì)自動(dòng)在CREATE TABLE語(yǔ)句前加上DROP TABLE語(yǔ)句,小心數(shù)據(jù)丟失。

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

綜合第一種與第二種,先創(chuàng)建一個(gè)新的存儲(chǔ)引擎表,然后利用INSTER ... SELECT語(yǔ)法來(lái)導(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ù)量大的話可以分批處理,針對(duì)每一段數(shù)據(jù)執(zhí)行事務(wù)提交操作,避免大事務(wù)產(chǎn)生的undo。Percona Toolkit提供了一個(gè)pt-online-schema-change的工具,可以簡(jiǎn)單,方便的執(zhí)行避免手工操作導(dǎo)致的失誤。

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


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