大部分情況下送讲,InnoDB都是正確的選擇。除非要用到InnoDB不具備的特性惋啃,且沒(méi)有其他方法代替哼鬓,否則應(yīng)該優(yōu)先選擇InnoDB引擎。
不建議混合使用多種存儲(chǔ)引擎边灭。
如果需要用不同引擎异希,考慮因素:
1.事務(wù)
如過(guò)需要事務(wù)支持,那么選擇InnoDB(或XtraDB)绒瘦。如果不需要事務(wù)称簿,并且主要是SELECT和INSERT操作,那么MyISAM可以選擇惰帽。一般日志性應(yīng)用比較符合這一特性憨降。
2.備份
如果需要在線熱備份,那么選擇InnoDB是基本要求该酗。
3.崩潰恢復(fù)
MyISAM崩潰后發(fā)生損壞的概率比InnoDB高很多授药,且恢復(fù)速度慢。
4.特有特性
常見(jiàn)場(chǎng)景選用合適的存儲(chǔ)引擎:
- 日志性應(yīng)用
這一類(lèi)應(yīng)用插入速度要求高呜魄,數(shù)據(jù)庫(kù)不能成為瓶頸烁焙。MyISAM或者Archive存儲(chǔ)引擎對(duì)這種應(yīng)用比較合適,因?yàn)殚_(kāi)銷(xiāo)低且插入速度快耕赘。
如果需要對(duì)記錄日志做分析報(bào)表骄蝇,生成報(bào)表的SQL可能導(dǎo)致插入效率明顯降低。
一種解決方案是利用MyISAM內(nèi)置的復(fù)制方案將數(shù)據(jù)復(fù)制一份到備庫(kù)操骡,然后在備庫(kù)上執(zhí)行耗時(shí)操作。
另一種方法是在日志記錄表中包含年月信息,這樣可以在已經(jīng)沒(méi)有插入操作的歷史表上做頻繁操作而不影響正在插入表的操作委煤。
只讀或大部分情況只讀的表
對(duì)于讀多寫(xiě)少場(chǎng)景尤慰,如果不介意崩潰恢復(fù)問(wèn)題敌土,MyISAM引擎合適。訂單處理
涉及訂單處理,那么支持事務(wù)是必要選項(xiàng)。還要考慮存儲(chǔ)引擎對(duì)外鍵的支持情況辱匿。InnoDB是訂單處理類(lèi)應(yīng)用的最佳選擇。電子公告牌和主題討論論壇
CD-ROM應(yīng)用
如果要發(fā)布基于CD-ROm或DVD-ROM且基于MySQL的應(yīng)用炫彩,可以考慮MyISAM表或MyISAM壓縮表匾七。大數(shù)據(jù)量
大數(shù)據(jù)量下不建議使用MyISAM,如果數(shù)據(jù)量增長(zhǎng)到10TB以上級(jí)別江兢,可能需要建立數(shù)據(jù)倉(cāng)庫(kù)昨忆。Infobright是MySQL數(shù)據(jù)倉(cāng)庫(kù)比較好的解決方案,有的可能適合TokuDB杉允。