1. 程式人生 > >MySQL資料庫中 InnoDB 與 MyISAM的區別及其應用場景

MySQL資料庫中 InnoDB 與 MyISAM的區別及其應用場景

InnoDB 與 MyISAM 都是MySQL資料庫的引擎。

1.他們的區別分為五點:

(1).事務處理:

MyISAM是非事務安全型的,而InnoDB是事務安全型的(支援事務處理等)

(2).鎖機制不同:

MyISAM是表鎖,InnoDB是行級鎖。

(3).增刪改查操作:

MyISAM:如果執行大量的查詢操作,MyISAM是更好的選擇

InnoDB:如果你的資料執行大量的插入/更新,出於效能方面的考慮,應該使用InnoDB表

(4).查詢表的行數不用:

MyISAM: 執行select count() from table語句時 MyISAM只需要簡單的查詢出儲存好的行數,當count(
)語句包含 where條件時,兩種表的操作是一樣的。

InnoDB: InnoDB 中不儲存表的具體行數,也就是說,執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行

(5).外來鍵

MyISAM不支援外來鍵

mysiam表不支援外來鍵,而InnoDB支援

2. 為什麼MyISAM會比Innodb 的查詢速度快。

NNODB在做SELECT的時候,要維護的東西比MYISAM引擎多很多;

(1)資料塊,INNODB要快取,MYISAM只快取索引塊, 這中間還有換進換出的減少;

(2)innodb定址要對映到塊,再到行,MYISAM 記錄的直接是檔案的OFFSET,定位比INNODB要快

(3)INNODB還需要維護MVCC一致;雖然你的場景沒有,但他還是需要去檢查和維護MVCC ( Multi-Version Concurrency Control )多版本併發控制

3.應用場景

MyISAM適合:(1)做很多count 的計算;(2)插入不頻繁,查詢非常頻繁;(3)沒有事務。

InnoDB適合:(1)可靠性要求比較高,或者要求事務;(2)表更新和查詢都相當的頻繁,並且行鎖定的機會比較大的情況。