MySQL搜索引擎

MyISAM:MyISAM是MySQL的ISAM擴展格式和缺省的數(shù)據(jù)庫引擎钝侠。除了提供ISAM里所沒有的索引和字段管理的大量功能目派,MyISAM還使用一種表格鎖定的機制略荡,來優(yōu)化多個并發(fā)的讀寫操作夏哭,其代價是你需要經(jīng)常運行OPTIMIZE TABLE命令,來恢復(fù)被更新機制所浪費的空間服球。MyISAM還有一些有用的擴展茴恰,例如用來修復(fù)數(shù)據(jù)庫文件的MyISAMCHK工具和用來恢復(fù)浪費空間的 MyISAMPACK工具。MYISAM強調(diào)了快速讀取操作斩熊,這可能就是為什么MySQL受到了WEB開發(fā)如此青睞的主要原因:在WEB開發(fā)中你所進行的大量數(shù)據(jù)操作都是讀取操作往枣。所以,大多數(shù)虛擬主機提供商和INTERNET平臺提供商只允許使用MYISAM格式粉渠。MyISAM格式的一個重要缺陷就是不能在表損壞后恢復(fù)數(shù)據(jù)分冈。

InnoDB和MyISAM是許多人在使用MySQL時最常用的兩個表類型,這兩個表類型各有優(yōu)劣霸株,視具體應(yīng)  用而定雕沉。
基本的差別為:MyISAM類型不支持事務(wù)處理等高級處理,
而InnoDB類型支持去件。MyISAM類型的  表強調(diào)的是性能坡椒,其執(zhí)行數(shù)度比InnoDB類型更快扰路,
但是不提供事務(wù)支持,而InnoDB提供事務(wù)支持已經(jīng)外  部鍵等高級數(shù)據(jù)庫功能倔叼。

一.InnoDB存儲引擎

InnoDB給MySQL的表提供了事務(wù)處理汗唱、回滾、崩潰修復(fù)能力和多版本并發(fā)控制的事務(wù)安全缀雳。
在MySQL從3.23.34a開始包含InnnoDB渡嚣。它是MySQL上第一個提供外鍵約束的表引擎。
而且InnoDB對事務(wù)處理的能力肥印,也是其他存儲引擎不能比擬的【希靠后版本的MySQL的默認(rèn)存儲引擎就是InnoDB深碱。



InnoDB存儲引擎總支持AUTO_INCREMENT。自動增長列的值不能為空藏畅,并且值必須唯一敷硅。
MySQL中規(guī)定自增列必須為主鍵。在插入值的時候愉阎,如果自動增長列不輸入值绞蹦,
則插入的值為自動增長后的值;如果輸入的值為0或空(NULL)榜旦,則插入的值也是自動增長后的值幽七;
如果插入某個確定的值,且該值在前面沒有出現(xiàn)過溅呢,就可以直接插入澡屡。



InnoDB還支持外鍵(FOREIGN KEY)。外鍵所在的表叫做子表咐旧,外鍵所依賴(REFERENCES)的表叫做父表驶鹉。
父表中被字表外鍵關(guān)聯(lián)的字段必須為主鍵。當(dāng)刪除铣墨、更新父表中的某條信息時室埋,子表也必須有相應(yīng)的改變,這是數(shù)據(jù)庫的參照完整性規(guī)則伊约。



InnoDB中姚淆,創(chuàng)建的表的表結(jié)構(gòu)存儲在.frm文件中(我覺得是frame的縮寫吧)。
數(shù)據(jù)和索引存儲在innodb_data_home_dir和innodb_data_file_path定義的表空間中碱妆。



InnoDB的優(yōu)勢在于提供了良好的事務(wù)處理肉盹、崩潰修復(fù)能力和并發(fā)控制。缺點是讀寫效率較差疹尾,占用的數(shù)據(jù)空間相對較大上忍。

二.MyISAM存儲引擎

MyISAM是MySQL中常見的存儲引擎骤肛,曾經(jīng)是MySQL的默認(rèn)存儲引擎。MyISAM是基于ISAM引擎發(fā)展起來的窍蓝,增加了許多有用的擴展腋颠。



MyISAM的表存儲成3個文件。文件的名字與表名相同吓笙。拓展名為frm淑玫、MYD、MYI面睛。其實絮蒿,frm文件存儲表的結(jié)構(gòu);
MYD文件存儲數(shù)據(jù)叁鉴,是MYData的縮寫土涝;MYI文件存儲索引,是MYIndex的縮寫幌墓。



基于MyISAM存儲引擎的表支持3種不同的存儲格式但壮。包括靜態(tài)型、動態(tài)型和壓縮型常侣。
其中蜡饵,靜態(tài)型是MyISAM的默認(rèn)存儲格式,它的字段是固定長度的胳施;動態(tài)型包含變長字段溯祸,記錄的長度不是固定的;
壓縮型需要用到myisampack工具巾乳,占用的磁盤空間較小您没。



MyISAM的優(yōu)勢在于占用空間小,處理速度快胆绊。缺點是不支持事務(wù)的完整性和并發(fā)性氨鹏。

三.MEMORY存儲引擎

MEMORY是MySQL中一類特殊的存儲引擎。它使用存儲在內(nèi)存中的內(nèi)容來創(chuàng)建表压状,而且數(shù)據(jù)全部放在內(nèi)存中仆抵。這些特性與前面的兩個很不同。



每個基于MEMORY存儲引擎的表實際對應(yīng)一個磁盤文件种冬。該文件的文件名與表名相同镣丑,類型為frm類型。該文件中只存儲表的結(jié)構(gòu)娱两。
而其數(shù)據(jù)文件莺匠,都是存儲在內(nèi)存中,這樣有利于數(shù)據(jù)的快速處理十兢,提高整個表的效率趣竣。
值得注意的是摇庙,服務(wù)器需要有足夠的內(nèi)存來維持MEMORY存儲引擎的表的使用。
如果不需要了遥缕,可以釋放內(nèi)存卫袒,甚至刪除不需要的表。



MEMORY默認(rèn)使用哈希索引单匣。速度比使用B型樹索引快夕凝。當(dāng)然如果你想用B型樹索引,可以在創(chuàng)建索引時指定户秤。



注意码秉,MEMORY用到的很少,因為它是把數(shù)據(jù)存到內(nèi)存中虎忌,如果內(nèi)存出現(xiàn)異常就會影響數(shù)據(jù)泡徙。
如果重啟或者關(guān)機,所有數(shù)據(jù)都會消失膜蠢。因此,基于MEMORY的表的生命周期很短莉兰,一般是一次性的挑围。

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

1.InnoDB不支持FULLTEXT類型的索引。
2.InnoDB 中不保存表的具體行數(shù)糖荒,也就是說杉辙,執(zhí)行select count(*) fromtable時,InnoDB要掃描一遍整,
個表來計算有多少行捶朵,但是MyISAM只要簡單的讀出保存好的行數(shù)即可注意的是蜘矢,當(dāng)count(*)語句包含where條件時,兩種表的操作是一樣的综看。

3.對于AUTO_INCREMENT類型的字段品腹,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中红碑,可以和其他字段一起建立聯(lián)合索引舞吭。

4.DELETE FROM table時,InnoDB不會重新建立表析珊,而是一行一行的刪除羡鸥。

5.LOAD TABLE FROMMASTER操作對InnoDB是不起作用的,
解決方法是首先把InnoDB表改成MyISAM表忠寻,導(dǎo)入數(shù)據(jù)后再改成InnoDB表惧浴,但是對于使用的額外的    InnoDB特性(例如外鍵)的表不適用。

另外奕剃,InnoDB表的行鎖也不是絕對的衷旅,假如在執(zhí)行一個SQL語句時MySQL不能確定要掃描的范圍捐腿,
InnoDB表同樣會鎖全表,例如updatetable set num=1 where name like “a%”
兩種類型最主要的差別就是Innodb支持事務(wù)處理與外鍵和行級鎖.而MyISAM不支持.所以MyISAM往往就      容易被人認(rèn)為只適合在小項目中使用芜茵。
我作為使用MySQL的用戶角度出發(fā)叙量,Innodb和MyISAM都是比較喜歡的,
但是從我目前運維的數(shù)據(jù)庫平臺要達(dá)到需求:99.9%的穩(wěn)定性九串,方便的擴展性和高可用性來說的話绞佩,MyISAM絕對是我的首選。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末猪钮,一起剝皮案震驚了整個濱河市品山,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烤低,老刑警劉巖肘交,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扑馁,居然都是意外死亡涯呻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門腻要,熙熙樓的掌柜王于貴愁眉苦臉地迎上來复罐,“玉大人,你說我怎么就攤上這事雄家⌒ё纾” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵趟济,是天一觀的道長乱投。 經(jīng)常有香客問我,道長顷编,這世上最難降的妖魔是什么戚炫? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮勾效,結(jié)果婚禮上嘹悼,老公的妹妹穿的比我還像新娘。我一直安慰自己层宫,他們只是感情好杨伙,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著萌腿,像睡著了一般限匣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天米死,我揣著相機與錄音锌历,去河邊找鬼。 笑死峦筒,一個胖子當(dāng)著我的面吹牛究西,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播物喷,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼卤材,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了峦失?” 一聲冷哼從身側(cè)響起扇丛,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎尉辑,沒想到半個月后帆精,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡隧魄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年卓练,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片购啄。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡昆庇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出闸溃,到底是詐尸還是另有隱情,我是刑警寧澤拱撵,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布辉川,位于F島的核電站,受9級特大地震影響拴测,放射性物質(zhì)發(fā)生泄漏乓旗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一集索、第九天 我趴在偏房一處隱蔽的房頂上張望屿愚。 院中可真熱鬧,春花似錦务荆、人聲如沸妆距。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽娱据。三九已至,卻和暖如春盅惜,著一層夾襖步出監(jiān)牢的瞬間中剩,已是汗流浹背忌穿。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留结啼,地道東北人掠剑。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像郊愧,于是被迫代替她去往敵國和親朴译。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

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