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
扫描全表