MySQL之--(二)存儲引擎
在mysql中的數據用各種不同的技術存儲在文件或者內存中。這些技術都是用了不同的存儲機制、索引技巧、鎖定水平,最終給用戶提供不同的選擇。這些不同的技術以及配套的相關功能在mysql中被稱為存儲引擎(或者表類型)。
在mysql中配置有許多不同的存儲引擎,用戶可以靈活的選擇適用於服務器、數據庫和表格的存儲引擎,以便獲得最大的性能和最大的靈活性。這也是mysql不同於其他大型數據庫以及mysql為何如此受歡迎的主要因素。一些大型的數據庫僅采用了一種存儲引擎,以一種尺碼滿足所有需求也就意味著會犧牲一些性能。
在命令行中可以通過命令顯示其支持的存儲引擎:
show engines;
在mysql中支持的存儲引擎主要有MyISAM、CSV、MRG_MYISAM、BLACKHOLE、InnoDB、MEMORY、ARCHIVE… www.2cto.com
(1)MyISAM: Mysql的默認數據庫,最為常用。擁有較高的插入,查詢速度,但不支持事務
.frm: 存儲表結構
.myd: 存儲數據,MYData的縮寫
.myi: 存儲索引,MYIndex的縮寫
(2)Inn0DB :事務型數據庫的首選引擎,支持ACID事務,支持行級鎖定
(3)BDB:源自Berkeley DB,事務型數據庫的另一種選擇,支持COMMIT和ROLLBACK等其他事務特性
(4)Memory :所有數據置於內存的存儲引擎,擁有極高的插入,更新和查詢效率。但是會占用和數據量成正比的內存空間。並且其內容會在Mysql重新啟動時丟失
(5)Merge:將一定數量的MyISAM表聯合而成一個整體,在超大規模數據存儲時很有用
(6)Archive :非常適合存儲大量的獨立的,作為歷史記錄的數據。因為它們不經常被讀取。Archive擁有高效的插入速度,但其對查詢的支持相對較差
(7)Federated:將不同的Mysql服務器聯合起來,邏輯上組成一個完整的數據庫。非常適合分布式應用 Cluster/NDB :高冗余的存儲引擎,用多台數據機器聯合提供服務以提高整體性能和安全性。適合數據量大,安全和性能要求高的應用
(8)CSV:邏輯上由逗號分割數據的存儲引擎。它會在數據庫子目錄裡為每個數據表創建一個.CSV文件。這是一種普通文本文件,每個數據行占用一個文本行。CSV存儲引擎不支持索引。
(9)BlackHole:黑洞引擎,寫入的任何數據都會消失,一般用於記錄binlog做復制的中繼
www.2cto.com
每種存儲引擎都有各自的優勢,不能籠統的說誰的性能更好,只有合適不合適。
(1)MyISAM存儲引擎:主要用於管理非事物表,它提供了高速的存儲與檢索,以及全文搜索能力。該存儲引擎插入數據快,但是空間和內存的使用效率較低。如果表主要適用於插入新紀錄和讀出記錄,那麼選擇MyISAM存儲引擎可以實現處理的高效率。
(2)InnoDB存儲引擎:它主要用於事務處理應用程序,支持外鍵,同時還支持奔潰修復能力和並發控制。如果對事物的完整性要求比較高,要求實現並發通知,那麼選擇InnoDB存儲引擎比較有優勢。如果需要頻繁的進行更新、刪除操作,也可以選擇該存儲引擎,因為該存儲引擎可以實現事物的提交和回滾。
(3)Memory存儲引擎:Memory存儲引擎提供“內存中”表,該存儲引擎的所有數據都存儲在內存中,數據的處理速度很快但是安全性不高。
作者 陳慶霆