首頁 >資料庫 >mysql教程 >MySQL 中 InnoDB 和 MyISAM 區別

MySQL 中 InnoDB 和 MyISAM 區別

Guanhui
Guanhui原創
2020-06-04 11:01:032916瀏覽

MySQL 中 InnoDB 和 MyISAM 區別

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,  索引檔案的副檔名是.MYI

InnoDB,基於磁碟的資源是InnoDB表空間資料檔案和它的日誌文件,InnoDB 表的大小只受限於作業系統文件的大小

注意:MyISAM表是保存成文件的形式,在跨平台的資料轉移中使用MyISAM儲存會省去不少的麻煩


#5、索引

InnoDB(索引組織表)使用的叢集索引、索引就是數據,順序存儲,因此能快取索引,也能快取資料

MyISAM(堆組織表)使用的是非叢集索引、索引和檔案分開,隨機存儲,只能快取索引

6、並發

MyISAM讀寫互相阻塞:不僅會在寫入的時候阻塞讀取,MyISAM還會在讀取的時候阻塞寫入,但讀取本身並不會阻塞另外的讀

InnoDB 讀寫阻塞與事務隔離等級相關

推薦教學:《

PHP教學》《 MySQL教學

以上是MySQL 中 InnoDB 和 MyISAM 區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn