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

MySQL數據庫引擎MyISAM和InnoDB的區別介紹

編輯:MySQL綜合教程

MySQL數據庫有多種存儲引擎:比如:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE等等,最常見的也就是MyISAM和InnoDB了,下面主要講解下MyISAM和InnoDB兩種mysql數據庫存儲引擎的區別。

MyISAM引擎是一種非事務性的引擎,提供高速存儲和檢索,以及全文搜索能力,適合數據倉庫等查詢頻繁的應用。MyISAM中,一個table實際保存為三個文件,.frm存儲表定義,.MYD存儲數據,.MYI存儲索引。MyISAM在所有MySQL配置裡被支持,它是默認的存儲引擎,除非你配置MySQL默認使用另外一個引擎。

MySQL服務器中的其他非事務性存儲引擎(如MyISAM)遵從不同的數據完整性范例,稱之為“原子操作”。按照事務術語,MyISAM表總能高效地工作在AUTOCOMMIT=1模式下。原子操作通常能提供可比較的完整性以及更好的性能。與經過優化調整的最快的事務性表相比,它的速度快3~5倍。由於MySQL服務器支持兩種范例,因而你能決定是否利用原子操作的速度更好地服務於你的應用程序,或使用事務特性。該選擇可按表進行。
 
InnoDB則是一種支持事務的引擎。給MySQL提供了具有提交,回滾和崩潰恢復能力的事務安全(ACID兼容)存儲引擎。所以的數據存儲在一個或者多個數據文件中,支持類似於Oracle的鎖機制。一般在OLTP應用中使用較廣泛。如果沒有指定InnoDB配置選項,MySQL將在MySQL數據目錄下創建一個名為ibdata1的自動擴展數據文件,以及兩個名為ib_logfile0和ib_logfile1的日志文件。

InnoDB鎖定在行級並且也在SELECT語句提供一個Oracle風格一致的非鎖定讀。這些特色增加了多用戶部署和性能。沒有在InnoDB中擴大鎖定的需要,因為在InnoDB中行級鎖定適合非常小的空間。InnoDB也支持FOREIGN KEY強制。在SQL查詢中,你可以自由地將InnoDB類型的表與其它MySQL的表的類型混合起來,甚至在同一個查詢中也可以混合。

InnoDB是為處理巨大數據量時的最大性能設計。它的CPU效率可能是任何其它基於磁盤的關系數據庫引擎所不能匹敵的。InnoDB存儲引擎被完全與MySQL服務器整合,InnoDB存儲引擎為在主內存中緩存數據和索引而維持它自己的緩沖池。

InnoDB存儲它的表&索引在一個表空間中,表空間可以包含數個文件。InnoDB表可以是任何尺寸,即使在文件尺寸被限制為2GB的操作系統上。InnoDB也默認被包括在所有MySQL 5.1二進制分發版裡。

您可能感興趣的文章

  • 合理使用MySQL數據庫索引以使數據庫高效運行
  • Mysql 數據庫緩存cache功能分析,調試以及性能總結
  • windows環境下mysql數據庫的主從同步備份步驟
  • 關於mysql數據庫大小寫敏感的問題
  • 忘記PHPnow的MySQL數據庫密碼的解決辦法
  • 總結MySQL數據庫服務器逐漸變慢的原因和解決辦法
  • Navicat for mysql 遠程連接 mySql數據庫提示10061,1045錯誤的解決辦法
  • php mysql數據庫操作類

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