MyISAM和InnoDB

MyISAM和InnoDB

MyISAM

MyISAM使用B+tree做爲索引結構,葉節點存放的是數據地址數據庫

MyISAM不支持事務和外鍵。性能

MyISAM是表鎖,對數據庫寫操做時會鎖住整個表,效率低。設計

MyISAM支持全文索引。指針

MyISAM設計結構簡單,適合read密集的表。日誌

MyISAM支持索引壓縮,能夠加載更多索引。code

InnoDB

InnoDB一樣使用B+tree做爲索引結構,可是葉節點存儲的是完整的數據索引

InnoDB支持事務和外鍵,在發生故障時能夠經過事務日誌來回複數據庫。事務

InnoDB是行鎖,只鎖定一行數據,所以寫操做很快。get

InnoDB不支持全文索引。it

InnoDB對於write和update密集的性能更好(因爲行級鎖的緣由)。

參考:http://stackoverflow.com/questions/15678406/when-to-use-myisam-and-innodb

區別

  • 葉節點數據存放的不一樣,指針和完整數據

  • 是否支持事務和外鍵

  • 設計的區別,適合讀密集仍是寫密集

  • 鎖的區別,表鎖和行鎖(若是InnoDB不能肯定掃描範圍,則須要對全表鎖定)

  • 是否支持全文索引

  • select count(*)的區別,MyISAM保存行數(若是由where則掃描全表),而InnoDB掃描全表

相關文章
相關標籤/搜索