MyISAM和InnoDB
MyISAM和InnoDB
MyISAM
MyISAM使用B+tree作为索引结构,叶节点存放的是数据地址。
MyISAM不支持事务和外键。
MyISAM是表锁,对数据库写操作时会锁住整个表,效率低。
MyISAM支持全文索引。
MyISAM设计结构简单,适合read密集的表。
MyISAM支持索引压缩,可以加载更多索引。
InnoDB
InnoDB同样使用B+tree作为索引结构,但是叶节点存储的是完整的数据。
InnoDB支持事务和外键,在发生故障时可以通过事务日志来回复数据库。
InnoDB是行锁,只锁定一行数据,因此写操作很快。
InnoDB不支持全文索引。
InnoDB对于write和update密集的性能更好(由于行级锁的原因)。
参考:http://stackoverflow.com/questions/15678406/when-to-use-myisam-and-innodb
区别
-
叶节点数据存放的不同,指针和完整数据
-
是否支持事务和外键
-
设计的区别,适合读密集还是写密集
-
锁的区别,表锁和行锁(如果
InnoDB不能确定扫描范围,则需要对全表锁定) -
是否支持全文索引
-
select count(*)的区别,MyISAM保存行数(如果由where则扫描全表),而InnoDB扫描全表
本文 由 cococo点点 创作,采用 知识共享 署名-非商业性使用-相同方式共享 3.0 中国大陆 许可协议进行许可。欢迎转载,请注明出处:
转载自:cococo点点 http://www.cnblogs.com/coder2012

浙公网安备 33010602011771号