前文索引:Mysql基礎-數據庫操作
說明:Mysql服務器提供了豐富的存儲引擎供我們選擇,並且給我們提供了足夠的可配性,完全可以根據實際需要實現自定義。
Mysql 的存儲引擎介紹
在數據庫中存的就是一張張有着千絲萬縷關係的表,所以表設計的好壞,將直接影響着整個數據庫。而在設計表的時候,我們都會關注一個問題,使用什麼存儲引擎?存儲引擎?存儲引擎?,那什麼是存儲引擎?
什麼是存儲引擎?
MySQL中的數據用各種不同的技術存儲在文件(或者內存)中。這些技術中的每一種技術都使用不同的存儲機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。通過選擇不同的技術,你能夠獲得額外的速度或者功能,從而改善你的應用的整體功能。
例如,如果你在研究大量的臨時數據,你也許需要使用內存MySQL存儲引擎。內存存儲引擎能夠在內存中存儲所有的表格數據。又或者,你也許需要一個支持事務處理的數據庫(以確保事務處理不成功時數據的回退能力)。
這些不同的技術以及配套的相關功能在 MySQL中被稱作存儲引擎(也稱作表類型)。MySQL默認配置了許多不同的存儲引擎,可以預先設置或者在MySQL服務器中啓用。你可以選擇適用於服務器、數據庫和表格的存儲引擎,以便在選擇如何存儲你的信息、如何檢索這些信息以及你需要你的數據結合什麼性能和功能的時候爲你提供最大的靈活性。
關係數據庫表是用於存儲和組織信息的數據結構,可以將表理解爲由行和列組成的表格,類似於Excel的電子表格的形式。有的表簡單,有的表複雜,有的表根本不用來存儲任何長期的數據,有的表讀取時非常快,但是插入數據時去很差;而我們在實際開發過程中,就可能需要各種各樣的表,不同的表,就意味着存儲不同類型的數據,數據的處理上也會存在着差異,那麼。對於MySQL來說,它提供了很多種類型的存儲引擎(或者說不同的表類型),我們可以根據對數據處理的需求,選擇不同的存儲引擎,從而最大限度的利用MySQL強大的功能。
Mysql存儲引擎分類:
FEDERATED -- 用於遠程表的存儲引擎
MERGE -- 用於管理由多個MyISAM表構成的表集合
MyISAM -- 主要的非事務處理存儲引擎
BLACKHOLE -- 這種存儲引擎會丟棄寫操作,讀操作時返回空內容
CSA -- 這種存儲引擎在存儲數據時,會以逗號作爲數據項之間的分隔符
MEMORY --所有內容存儲與內存中
ARCHIVE -- 用於數據存檔的引擎(行被插入後就不能再此修改)
InnoDB -- 具備外鍵支持功能的事務處理引擎
NDB -- Mysql集羣專用存儲引擎
PERFORMANCE_SCHEMA -- 5.5開始提供,主要用於PERFORMANCE_SCHEMA數據庫,用戶不能自己創建PERFORMANCE_SCHEMA引擎的表
注意:
1、有幾種存儲引擎的名字還有別名,例如,MRG_MyISAM和NDBCLUSTER分別是MERGE和NDB的別名。MEMORY和InnoDB在早期分別稱爲HEAP和Innobase,雖然後面兩個別名還可以被識別,但已經廢棄了。
2、Mysql服務器在一開始都是把所有的存儲引擎編譯在內部的,以供後期使用,現在,它改變了這種方式,而是以一種“可插拔”的架構提供,可以讓我們選擇性的加載。
查看當前數據庫可用存儲引擎:
語法:show engines;
或者:select * from information_schema.ENGINES