MySQL 中InnoDB 和MyISAM 區別
1、交易和外鍵
InnoDB具有事務,支援4個事務隔離級別,回滾,崩潰修復能力和多版本並發的事務安全,包括ACID。如果應用程式中需要執行大量的INSERT或UPDATE操作,則應該使用InnoDB,這樣可以提高多使用者並發操作的效能
MyISAM管理非交易表。它提供高速儲存和檢索,以及全文搜尋能力。如果應用程式中需要執行大量的SELECT查詢,那麼MyISAM是更好的選擇
2、全文索引
Innodb不支援全文索引,如果一定要用的話,最好使用sphinx等搜尋引擎。 myisam對中文支援的不是很好
不過新版本的Innodb已經支援了
3、鎖
##mysql支援三種鎖定級別,行級、頁級、表級;MyISAM支援表級鎖定,提供與Oracle 類型一致的不加鎖讀取(non-locking read in SELECTs)InnoDB支援行級鎖,InnoDB表的行鎖也不是絕對的,如果在執行一個SQL語句時MySQL不能確定要掃描的範圍,InnoDB表同樣會鎖全表,注意間隙鎖的影響例如update table set num=1 where name like “�a%”4、儲存
MyISAM在磁碟上儲存成三個檔案。第一個檔案的名字以表格的名字開始,副檔名指出檔案類型, .frm檔案儲存表定義,資料檔案的副檔名為.MYD, 索引檔案的副檔名是.MYIInnoDB,基於磁碟的資源是InnoDB表空間資料檔案和它的日誌文件,InnoDB 表的大小只受限於作業系統文件的大小注意:MyISAM表是保存成文件的形式,在跨平台的資料轉移中使用MyISAM儲存會省去不少的麻煩
#5、索引
InnoDB(索引組織表)使用的叢集索引、索引就是數據,順序存儲,因此能快取索引,也能快取資料MyISAM(堆組織表)使用的是非叢集索引、索引和檔案分開,隨機存儲,只能快取索引6、並發
MyISAM讀寫互相阻塞:不僅會在寫入的時候阻塞讀取,MyISAM還會在讀取的時候阻塞寫入,但讀取本身並不會阻塞另外的讀InnoDB 讀寫阻塞與事務隔離等級相關推薦教學:《以上是MySQL 中 InnoDB 和 MyISAM 區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!