前文索引:Mysql基礎(chǔ)-數(shù)據(jù)庫(kù)操作
說(shuō)明:Mysql服務(wù)器提供了豐富的存儲(chǔ)引擎供我們選擇,并且給我們提供了足夠的可配性鸽扁,完全可以根據(jù)實(shí)際需要實(shí)現(xiàn)自定義。
Mysql 的存儲(chǔ)引擎介紹
????????在數(shù)據(jù)庫(kù)中存的就是一張張有著千絲萬(wàn)縷關(guān)系的表镶骗,所以表設(shè)計(jì)的好壞桶现,將直接影響著整個(gè)數(shù)據(jù)庫(kù)。而在設(shè)計(jì)表的時(shí)候鼎姊,我們都會(huì)關(guān)注一個(gè)問(wèn)題骡和,使用什么存儲(chǔ)引擎?存儲(chǔ)引擎相寇?存儲(chǔ)引擎即横?,那什么是存儲(chǔ)引擎裆赵?
什么是存儲(chǔ)引擎东囚?
????????MySQL中的數(shù)據(jù)用各種不同的技術(shù)存儲(chǔ)在文件(或者內(nèi)存)中。這些技術(shù)中的每一種技術(shù)都使用不同的存儲(chǔ)機(jī)制战授、索引技巧页藻、鎖定水平并且最終提供廣泛的不同的功能和能力。通過(guò)選擇不同的技術(shù)植兰,你能夠獲得額外的速度或者功能份帐,從而改善你的應(yīng)用的整體功能。
????????例如楣导,如果你在研究大量的臨時(shí)數(shù)據(jù)废境,你也許需要使用內(nèi)存MySQL存儲(chǔ)引擎。內(nèi)存存儲(chǔ)引擎能夠在內(nèi)存中存儲(chǔ)所有的表格數(shù)據(jù)筒繁。又或者噩凹,你也許需要一個(gè)支持事務(wù)處理的數(shù)據(jù)庫(kù)(以確保事務(wù)處理不成功時(shí)數(shù)據(jù)的回退能力)。
? ??????這些不同的技術(shù)以及配套的相關(guān)功能在 MySQL中被稱作存儲(chǔ)引擎(也稱作表類型)毡咏。MySQL默認(rèn)配置了許多不同的存儲(chǔ)引擎驮宴,可以預(yù)先設(shè)置或者在MySQL服務(wù)器中啟用。你可以選擇適用于服務(wù)器呕缭、數(shù)據(jù)庫(kù)和表格的存儲(chǔ)引擎堵泽,以便在選擇如何存儲(chǔ)你的信息、如何檢索這些信息以及你需要你的數(shù)據(jù)結(jié)合什么性能和功能的時(shí)候?yàn)槟闾峁┳畲蟮撵`活性恢总。
????????關(guān)系數(shù)據(jù)庫(kù)表是用于存儲(chǔ)和組織信息的數(shù)據(jù)結(jié)構(gòu)迎罗,可以將表理解為由行和列組成的表格,類似于Excel的電子表格的形式片仿。有的表簡(jiǎn)單纹安,有的表復(fù)雜,有的表根本不用來(lái)存儲(chǔ)任何長(zhǎng)期的數(shù)據(jù),有的表讀取時(shí)非匙昝铮快,但是插入數(shù)據(jù)時(shí)去很差奸鸯;而我們?cè)趯?shí)際開(kāi)發(fā)過(guò)程中咪笑,就可能需要各種各樣的表,不同的表娄涩,就意味著存儲(chǔ)不同類型的數(shù)據(jù)窗怒,數(shù)據(jù)的處理上也會(huì)存在著差異,那么蓄拣。對(duì)于MySQL來(lái)說(shuō)扬虚,它提供了很多種類型的存儲(chǔ)引擎(或者說(shuō)不同的表類型),我們可以根據(jù)對(duì)數(shù)據(jù)處理的需求球恤,選擇不同的存儲(chǔ)引擎辜昵,從而最大限度的利用MySQL強(qiáng)大的功能。
Mysql存儲(chǔ)引擎分類:
FEDERATED? ? ? ? ? ? ? ? ? ? ?--?用于遠(yuǎn)程表的存儲(chǔ)引擎
MERGE? ? ? ? ? ? ? ? ? ? ? ? ? ? ? --?用于管理由多個(gè)MyISAM表構(gòu)成的表集合
MyISAM? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--?主要的非事務(wù)處理存儲(chǔ)引擎
BLACKHOLE? ? ? ? ? ? ? ? ? ? --?這種存儲(chǔ)引擎會(huì)丟棄寫操作咽斧,讀操作時(shí)返回空內(nèi)容
CSA? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--?這種存儲(chǔ)引擎在存儲(chǔ)數(shù)據(jù)時(shí)堪置,會(huì)以逗號(hào)作為數(shù)據(jù)項(xiàng)之間的分隔符
MEMORY? ? ? ? ? ? ? ? ? ? ? ? ? ?--所有內(nèi)容存儲(chǔ)與內(nèi)存中
ARCHIVE? ? ? ? ? ? ? ? ? ? ? ? ??--?用于數(shù)據(jù)存檔的引擎(行被插入后就不能再此修改)
InnoDB? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--?具備外鍵支持功能的事務(wù)處理引擎
NDB? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -- Mysql集群專用存儲(chǔ)引擎
PERFORMANCE_SCHEMA? ? ? -- 5.5開(kāi)始提供,主要用于PERFORMANCE_SCHEMA數(shù)據(jù)庫(kù)张惹,用戶不能自己創(chuàng)建PERFORMANCE_SCHEMA引擎的表
注意:
? ? ? ? 1舀锨、有幾種存儲(chǔ)引擎的名字還有別名,例如宛逗,MRG_MyISAM和NDBCLUSTER分別是MERGE和NDB的別名坎匿。MEMORY和InnoDB在早期分別稱為HEAP和Innobase,雖然后面兩個(gè)別名還可以被識(shí)別雷激,但已經(jīng)廢棄了替蔬。
? ? ? ? 2、Mysql服務(wù)器在一開(kāi)始都是把所有的存儲(chǔ)引擎編譯在內(nèi)部的屎暇,以供后期使用进栽,現(xiàn)在,它改變了這種方式恭垦,而是以一種“可插拔”的架構(gòu)提供快毛,可以讓我們選擇性的加載。
查看當(dāng)前數(shù)據(jù)庫(kù)可用存儲(chǔ)引擎:
語(yǔ)法:show engines番挺;
或者:select * from information_schema.ENGINES