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