MyISAM
使用B+tree
做爲索引結構,葉節點存放的是數據地址
。數據庫
MyISAM
不支持事務和外鍵。性能
MyISAM
是表鎖,對數據庫寫操做時會鎖住整個表,效率低。設計
MyISAM
支持全文索引。指針
MyISAM
設計結構簡單,適合read密集
的表。日誌
MyISAM
支持索引壓縮,能夠加載更多索引。code
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
掃描全表