複製鏈接
請複製以下鏈接發送給好友

存儲引擎

鎖定
MySQL中的數據用各種不同的技術存儲在文件(或者內存)中。這些技術中的每一種技術都使用不同的存儲機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。通過選擇不同的技術,你能夠獲得額外的速度或者功能,從而改善你的應用的整體功能。
中文名
存儲引擎
內存存儲引擎
能夠在內存中存儲所有表格數據
類    型
MyISAM InnoDB
優    點
靈活

目錄

存儲引擎技術介紹

例如,如果你在研究大量的臨時數據,你也許需要使用內存存儲引擎。內存存儲引擎能夠在內存中存儲所有的表格數據。又或者,你也許需要一個支持事務處理的數據庫(以確保事務處理不成功時數據的回退能力)。
這些不同的技術以及配套的相關功能在MySQL中被稱作存儲引擎(也稱作表類型)。MySQL默認配置了許多不同的存儲引擎,可以預先設置或者在MySQL服務器中啓用。你可以選擇適用於服務器、數據庫和表格的存儲引擎,以便在選擇如何存儲你的信息、如何檢索這些信息以及你需要你的數據結合什麼性能和功能的時候為你提供最大的靈活性。
選擇如何存儲和檢索你的數據的這種靈活性是MySQL為什麼如此受歡迎的主要原因。其它數據庫系統(包括大多數商業選擇)僅支持一種類型的數據存儲。遺憾的是,其它類型的數據庫解決方案採取的“一個尺碼滿足一切需求”的方式意味着你要麼就犧牲一些性能,要麼你就用幾個小時甚至幾天的時間詳細調整你的數據庫。使用MySQL,我們僅需要修改我們使用的存儲引擎就可以了 [1] 

存儲引擎分類

MyISAM: 擁有較高的插入,查詢速度,但不支持事務
InnoDB :5.5版本後Mysql的默認數據庫,事務型數據庫的首選引擎,支持ACID事務,支持行級鎖定
BDB: 源自Berkeley DB,事務型數據庫的另一種選擇,支持COMMIT和ROLLBACK等其他事務特性
Memory :所有數據置於內存的存儲引擎,擁有極高的插入,更新和查詢效率。但是會佔用和數據量成正比的內存空間。並且其內容會在Mysql重新啓動時丟失
Merge :將一定數量的MyISAM表聯合而成一個整體,在超大規模數據存儲時很有用
Archive :非常適合存儲大量的獨立的,作為歷史記錄的數據。因為它們不經常被讀取。Archive擁有高效的插入速度,但其對查詢的支持相對較差
Federated: 將不同的Mysql服務器聯合起來,邏輯上組成一個完整的數據庫。非常適合分佈式應用
Cluster/NDB :高冗餘的存儲引擎,用多台數據機器聯合提供服務以提高整體性能和安全性。適合數據量大,安全和性能要求高的應用
CSV: 邏輯上由逗號分割數據的存儲引擎。它會在數據庫子目錄裏為每個數據表創建一個.CSV文件。這是一種普通文本文件,每個數據行佔用一個文本行。CSV存儲引擎不支持索引。
BlackHole :黑洞引擎,寫入的任何數據都會消失,一般用於記錄binlog做複製的中繼
另外,Mysql的存儲引擎接口定義良好。有興趣的開發者通過閲讀文檔編寫自己的存儲引擎。
參考資料