Innodb與Myisam引擎的區別與應用場景

轉自:https://www.cnblogs.com/changna1314/p/6878900.htmlhtml

 

1. 區別:緩存

(1)事務處理:安全

MyISAM是非事務安全型的,而InnoDB是事務安全型的(支持事務處理等高級處理);併發

(2)鎖機制不一樣:性能

MyISAM是表級鎖,而InnoDB是行級鎖;spa

(3)select ,update ,insert ,delete 操做:htm

MyISAM:若是執行大量的SELECT,MyISAM是更好的選擇
InnoDB:若是你的數據執行大量的INSERT或UPDATE,出於性能方面的考慮,應該使用InnoDB表

(4)查詢表的行數不一樣:blog

MyISAM:select count(*) from table,MyISAM只要簡單的讀出保存好的行數,注意的是,當count(*)語句包含    where條件時,兩種表的操做是同樣的
InnoDB : InnoDB 中不保存表的具體行數,也就是說,執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行
(5)外鍵支持:
mysiam表不支持外鍵,而InnoDB支持

2. 爲何MyISAM會比Innodb 的查詢速度快。索引

INNODB在作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)表更新和查詢都至關的頻繁,而且行鎖定的機會比較大的狀況。

相關文章
相關標籤/搜索