程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> [MySQL]存儲引擎對比

[MySQL]存儲引擎對比

編輯:MySQL綜合教程

[MySQL]存儲引擎對比   下表顯示了各種存儲引擎的特性:     其中最常見的兩種存儲引擎是MyISAM和InnoDB 剛接觸MySQL的時候可能會有些驚訝,竟然有不支持事務的存儲引擎,學過關系型數據庫理論的人都知道,事務是關系型數據庫的核心。但是在現實應用中(特別是互聯網),為了提高性能,在某些場景下可以擯棄事務。下面一一介紹各種存儲引擎:   MyISAM存儲引擎 MyISAM是MySQL官方提供默認的存儲引擎,其特點是不支持事務、表鎖和全文索引,對於一些OLAP系統,操作速度快。   每個MyISAM在磁盤上存儲成三個文件。文件名都和表名相同,擴展名分別是.frm(存儲表定義)、.MYD (MYData,存儲數據)、.MYI (MYIndex,存儲索引)。這裡特別要注意的是MyISAM不緩存數據文件,只緩存索引文件。   InnoDB存儲引擎 InnoDB存儲引擎支持事務,主要面向OLTP方面的應用,其特點是行鎖設置、支持外鍵,並支持類似於Oracle的非鎖定讀,即默認情況下讀不產生鎖。InnoDB將數據放在一個邏輯表空間中(類似Oracle)。InnoDB通過多版本並發控制來獲得高並發性,實現了ANSI標准的4種隔離級別,默認為Repeatable,使用一種被稱為next-key locking的策略避免幻讀。 對於表中數據的存儲,InnoDB采用類似Oracle索引組織表Clustered的方式進行存儲。 InnoDB 存儲引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是對比Myisam的存儲引擎,InnoDB 寫的處理效率差一些並且會占用更多的磁盤空間以保留數據和索 引。   NDB存儲引擎 NDB存儲引擎是一個集群存儲引擎,類似於Oracle的RAC,但它是Share Nothing的架構,因此能提供更高級別的高可用性和可擴展性。NDB的特點是數據全部放在內存中,因此通過主鍵查找非常快。 關於NDB,有一個問題需要注意,它的連接(join)操作是在MySQL數據庫層完成,不是在存儲引擎層完成,這意味著,復雜的join操作需要巨大的網絡開銷,查詢速度會很慢。   Memory (Heap) 存儲引擎 Memory存儲引擎(之前稱為Heap)將表中數據存放在內存中,如果數據庫重啟或崩潰,數據丟失,因此它非常適合存儲臨時數據。   Archive存儲引擎 正如其名稱所示,Archive非常適合存儲歸檔數據,如日志信息。它只支持INSERT和SELECT操作,其設計的主要目的是提供高速的插入和壓縮功能。   Federated存儲引擎 Federated存儲引擎不存放數據,它至少指向一台遠程MySQL數據庫服務器上的表,非常類似於Oracle的透明網關。   Maria存儲引擎 Maria存儲引擎是新開發的引擎,其設計目標是用來取代原有的MyISAM存儲引擎,從而成為MySQL默認的存儲引擎。   最後需要強調一點,雖然MySQL有非常多的存儲引擎,但它們之間不存在優劣關系,而是根據不同的應用選擇適合自己業務的存儲引擎。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved