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

1. 區別:

(1)事務處理:

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

(2)鎖機制不同:

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

(3)select ,update ,insert ,delete 操作:

MyISAM:如果執行大量的SELECT,MyISAM是更好的選擇

InnoDB:如果你的數據執行大量的INSERT或UPDATE,出於性能方面的考慮,應該使用InnoDB表

(4)查詢表的行數不同:

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)表更新和查詢都相當的頻繁,並且行鎖定的機會比較大的情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章