MySQL存儲(chǔ)引擎--MyISAM與InnoDB區(qū)別

MyISAM 和InnoDB 講解

InnoDB和MyISAM是許多人在使用MySQL時(shí)最常用的兩個(gè)表類(lèi)型脸候,這兩個(gè)表類(lèi)型各有優(yōu)劣,視具體應(yīng)用而定菜循∏惴。基本的差別為:MyISAM類(lèi)型不支持事務(wù)處理等高級(jí)處理,而InnoDB類(lèi)型支持艳馒。MyISAM類(lèi)型的表強(qiáng)調(diào)的是性能憎亚,其執(zhí)行數(shù)度比InnoDB類(lèi)型更快,但是不提供事務(wù)支持弄慰,而InnoDB提供事務(wù)支持以及外部鍵等高級(jí)數(shù)據(jù)庫(kù)功能第美。

以下是一些細(xì)節(jié)和具體實(shí)現(xiàn)的差別:

◆1.InnoDB不支持FULLTEXT類(lèi)型的索引。

◆2.InnoDB 中不保存表的具體行數(shù)陆爽,也就是說(shuō)什往,執(zhí)行select count(*) from table時(shí),InnoDB要掃描一遍整個(gè)表來(lái)計(jì)算有多少行慌闭,但是MyISAM只要簡(jiǎn)單的讀出保存好的行數(shù)即可别威。注意的是,當(dāng)count(*)語(yǔ)句包含 where條件時(shí)驴剔,兩種表的操作是一樣的省古。

◆3.對(duì)于AUTO_INCREMENT類(lèi)型的字段,InnoDB中必須包含只有該字段的索引仔拟,但是在MyISAM表中衫樊,可以和其他字段一起建立聯(lián)合索引。

◆4.DELETE FROM table時(shí),InnoDB不會(huì)重新建立表科侈,而是一行一行的刪除载佳。

◆5.LOAD TABLE FROM MASTER操作對(duì)InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表臀栈,導(dǎo)入數(shù)據(jù)后再改成InnoDB表蔫慧,但是對(duì)于使用的額外的InnoDB特性(例如外鍵)的表不適用。

另外权薯,InnoDB表的行鎖也不是絕對(duì)的姑躲,假如在執(zhí)行一個(gè)SQL語(yǔ)句時(shí)MySQL不能確定要掃描的范圍,InnoDB表同樣會(huì)鎖全表盟蚣,例如update table set num=1 where name like “%aaa%”

兩種類(lèi)型最主要的差別就是Innodb 支持事務(wù)處理與外鍵和行級(jí)鎖黍析。而MyISAM不支持.所以MyISAM往往就容易被人認(rèn)為只適合在小項(xiàng)目中使用。

作為使用MySQL的用戶角度出發(fā)屎开,Innodb和MyISAM都是比較喜歡的阐枣,如果數(shù)據(jù)庫(kù)平臺(tái)要達(dá)到需求:99.9%的穩(wěn)定性,方便的擴(kuò)展性和高可用性來(lái)說(shuō)的話奄抽,MyISAM絕對(duì)是首選蔼两。

原因如下:

1、平臺(tái)上承載的大部分項(xiàng)目是讀多寫(xiě)少的項(xiàng)目逞度,而MyISAM的讀性能是比Innodb強(qiáng)不少的额划。

2、MyISAM的索引和數(shù)據(jù)是分開(kāi)的档泽,并且索引是有壓縮的俊戳,內(nèi)存使用率就對(duì)應(yīng)提高了不少。能加載更多索引馆匿,而Innodb是索引和數(shù)據(jù)是緊密捆綁的品抽,沒(méi)有使用壓縮從而會(huì)造成Innodb比MyISAM體積龐大不小。

3甜熔、經(jīng)常隔1圆恤,2個(gè)月就會(huì)發(fā)生應(yīng)用開(kāi)發(fā)人員不小心update一個(gè)表where寫(xiě)的范圍不對(duì),導(dǎo)致這個(gè)表沒(méi)法正常用了腔稀,這個(gè)時(shí)候MyISAM的優(yōu)越性就體現(xiàn)出來(lái)了盆昙,隨便從當(dāng)天拷貝的壓縮包取出對(duì)應(yīng)表的文件,隨便放到一個(gè)數(shù)據(jù)庫(kù)目錄下焊虏,然后dump成sql再導(dǎo)回到主庫(kù)淡喜,并把對(duì)應(yīng)的binlog補(bǔ)上。如果是Innodb诵闭,恐怕不可能有這么快速度炼团,別和我說(shuō)讓Innodb定期用導(dǎo)出xxx.sql機(jī)制備份澎嚣,因?yàn)樽钚〉囊粋€(gè)數(shù)據(jù)庫(kù)實(shí)例的數(shù)據(jù)量基本都是幾十G大小。

4瘟芝、從接觸的應(yīng)用邏輯來(lái)說(shuō)易桃,select count(*) 和order by 是最頻繁的,大概能占了整個(gè)sql總語(yǔ)句的60%以上的操作锌俱,而這種操作Innodb其實(shí)也是會(huì)鎖表的晤郑,很多人以為Innodb是行級(jí)鎖,那個(gè)只是where對(duì)它主鍵是有效贸宏,非主鍵的都會(huì)鎖全表的造寝。

5、還有就是經(jīng)常有很多應(yīng)用部門(mén)需要我給他們定期某些表的數(shù)據(jù)吭练,MyISAM的話很方便诫龙,只要發(fā)給他們對(duì)應(yīng)那表的frm.MYD,MYI的文件,讓他們自己在對(duì)應(yīng)版本的數(shù)據(jù)庫(kù)啟動(dòng)就行鲫咽,而Innodb就需要導(dǎo)出xxx.sql了赐稽,因?yàn)楣饨o別人文件,受字典數(shù)據(jù)文件的影響浑侥,對(duì)方是無(wú)法使用的。

6晰绎、如果和MyISAM比insert寫(xiě)操作的話寓落,Innodb還達(dá)不到MyISAM的寫(xiě)性能,如果是針對(duì)基于索引的update操作荞下,雖然MyISAM可能會(huì)遜色I(xiàn)nnodb,但是那么高并發(fā)的寫(xiě)伶选,從庫(kù)能否追的上也是一個(gè)問(wèn)題,還不如通過(guò)多實(shí)例分庫(kù)分表架構(gòu)來(lái)解決尖昏。

7仰税、如果是用MyISAM的話,merge引擎可以大大加快應(yīng)用部門(mén)的開(kāi)發(fā)速度抽诉,他們只要對(duì)這個(gè)merge表做一些select count(*)操作陨簇,非常適合大項(xiàng)目總量約幾億的rows某一類(lèi)型(如日志,調(diào)查統(tǒng)計(jì))的業(yè)務(wù)表迹淌。

當(dāng)然Innodb也不是絕對(duì)不用河绽,用事務(wù)的項(xiàng)目就用Innodb的。另外唉窃,可能有人會(huì)說(shuō)你MyISAM無(wú)法抗太多寫(xiě)操作耙饰,但是可以通過(guò)架構(gòu)來(lái)彌補(bǔ)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纹份,一起剝皮案震驚了整個(gè)濱河市苟跪,隨后出現(xiàn)的幾起案子廷痘,更是在濱河造成了極大的恐慌,老刑警劉巖件已,帶你破解...
    沈念sama閱讀 222,464評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笋额,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡拨齐,警方通過(guò)查閱死者的電腦和手機(jī)鳞陨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瞻惋,“玉大人厦滤,你說(shuō)我怎么就攤上這事〖呃牵” “怎么了掏导?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,078評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)羽峰。 經(jīng)常有香客問(wèn)我趟咆,道長(zhǎng),這世上最難降的妖魔是什么梅屉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,979評(píng)論 1 299
  • 正文 為了忘掉前任值纱,我火速辦了婚禮,結(jié)果婚禮上坯汤,老公的妹妹穿的比我還像新娘虐唠。我一直安慰自己,他們只是感情好惰聂,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布疆偿。 她就那樣靜靜地躺著,像睡著了一般搓幌。 火紅的嫁衣襯著肌膚如雪杆故。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,584評(píng)論 1 312
  • 那天溉愁,我揣著相機(jī)與錄音处铛,去河邊找鬼。 笑死拐揭,一個(gè)胖子當(dāng)著我的面吹牛罢缸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播投队,決...
    沈念sama閱讀 41,085評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼枫疆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了敷鸦?” 一聲冷哼從身側(cè)響起息楔,我...
    開(kāi)封第一講書(shū)人閱讀 40,023評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤寝贡,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后值依,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體圃泡,經(jīng)...
    沈念sama閱讀 46,555評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
  • 正文 我和宋清朗相戀三年愿险,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颇蜡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辆亏,死狀恐怖风秤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情扮叨,我是刑警寧澤缤弦,帶...
    沈念sama閱讀 36,439評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站彻磁,受9級(jí)特大地震影響碍沐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜衷蜓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
  • 文/蒙蒙 一累提、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧磁浇,春花似錦斋陪、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,601評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鞍匾。三九已至交洗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間橡淑,已是汗流浹背构拳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,702評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梁棠,地道東北人置森。 一個(gè)月前我還...
    沈念sama閱讀 49,191評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像符糊,于是被迫代替她去往敵國(guó)和親凫海。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容