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引擎 Innodb和MyISAM的區別
本文是摘抄其他網文整理而成。create database engine innodb mysql 資料庫分為innodb和myisam兩類。兩者最主要的區別是 innodb支援事務處理 外來鍵和行級鎖.而myisam不支援,所以如果cud比較頻繁或要求事務一致性的,使用innodb比較好,反之使用...
MySQL引擎 InnoDB和MyISAM的區別
mysql 是乙個支援多引擎的系統,主要有以下幾種 而在實際應用中,比較常用的就是innodb和myisam這兩種,但是大多數人都不太清楚兩者的區別,為什麼myisam會被innodb取代?這篇文章就重點討論它們的區別。crash safe簡單來說,就是即使資料庫發生異常重啟,之前提交的記錄也不會丟...
Mysql 儲存引擎之 MyISAM儲存引擎
myisam是預設儲存引擎。每個myisam在磁碟上儲存成三個檔案。frm檔案儲存表定義 myd檔案儲存資料 myi檔案儲存索引。要明確表示你想要用乙個myisam 請用engine表選項指出來 create table test myisam id int engine myisam 2 如下是m...