Innodb 與MyISAM的區(qū)別
- InnoDB支持事務(wù),MyISAM不支持搞坝,對于InnoDB每一條SQL語言都默認(rèn)封裝成事務(wù)搔谴,自動提交,這樣會影響速度桩撮,所以最好把多條SQL語言放在begin transaction和commit之間敦第,組成一個事務(wù);
- InnoDB支持外鍵店量,而MyISAM不支持芜果。對一個包含外鍵的InnoDB表轉(zhuǎn)為MYISAM會失敗融师;
- InnoDB是聚集索引右钾,數(shù)據(jù)文件是和索引綁在一起的,必須要有主鍵旱爆,通過主鍵索引效率很高舀射。但是輔助索引需要兩次查詢,先查詢到主鍵怀伦,然后再通過主鍵查詢到數(shù)據(jù)脆烟。因此,主鍵不應(yīng)該過大房待,因為主鍵太大浩淘,其他索引也都會很大。而MyISAM是非聚集索引吴攒,數(shù)據(jù)文件是分離的张抄,索引保存的是數(shù)據(jù)文件的指針。主鍵索引和輔助索引是獨立的洼怔。
- InnoDB不保存表的具體行數(shù)署惯,執(zhí)行select count(*) from table時需要全表掃描。而MyISAM用一個變量保存了整個表的行數(shù)镣隶,執(zhí)行上述語句時只需要讀出該變量即可极谊,速度很快;
- Innodb不支持全文索引安岂,而MyISAM支持全文索引轻猖,查詢效率上MyISAM要高;
如何選擇
- 是否要支持事務(wù)域那,如果要請選擇innodb咙边,如果不需要可以考慮MyISAM
- 如果表中絕大多數(shù)都只是讀查詢,可以考慮MyISAM,如果既有讀寫也挺頻繁败许,請使用InnoDB王带。
- 系統(tǒng)奔潰后,MyISAM恢復(fù)起來更困難市殷,能否接受愕撰;
- MySQL5.5版本開始Innodb已經(jīng)成為Mysql的默認(rèn)引擎(之前是MyISAM),說明其優(yōu)勢是有目共睹的醋寝,如果你不知道用什么搞挣,那就用InnoDB,至少不會差音羞。