myisam与innodb索引组织逻辑结构
2013-01-31 12:26
225 查看
首先复习一下myisam与innodb索引组织逻辑结构:
•Myisam
-主键索引/非主键索引
叶子节点上均带有行号,通过行号进行索引
•Innodb
-主键索引(聚簇索引) 叶子节点上带有数据
-非主键索引(第二索引) 叶子节点上带有主键id
问题:
为什么innodb存储引擎的索引设计与myisam的实现有异?
myisam属于堆表,数据写入一直累积(concurrent_insert参数设置为2);此时写入性能比innodb好,但是无论是主键查询还是非主键查询,都不可避免的需要二次io(除非能索引内完成字段记录返回)
innodb属于聚簇索引组织表(主键索引即数据),由于必须保证索引有序,在写入时需要找到合适的位置进行插入,有时候还会导致二叉树调整所以写入性能比myisam要差;但是主键查找时只需要一次io即可返回数据,非主键索引查询时如果在索引内不能完成查询记录返回则需要第二次的io
两者的索引设计各有优缺点,在合适的场合使用合适的存储引擎非常必要。
•Myisam
-主键索引/非主键索引
叶子节点上均带有行号,通过行号进行索引
•Innodb
-主键索引(聚簇索引) 叶子节点上带有数据
-非主键索引(第二索引) 叶子节点上带有主键id
问题:
为什么innodb存储引擎的索引设计与myisam的实现有异?
myisam属于堆表,数据写入一直累积(concurrent_insert参数设置为2);此时写入性能比innodb好,但是无论是主键查询还是非主键查询,都不可避免的需要二次io(除非能索引内完成字段记录返回)
innodb属于聚簇索引组织表(主键索引即数据),由于必须保证索引有序,在写入时需要找到合适的位置进行插入,有时候还会导致二叉树调整所以写入性能比myisam要差;但是主键查找时只需要一次io即可返回数据,非主键索引查询时如果在索引内不能完成查询记录返回则需要第二次的io
两者的索引设计各有优缺点,在合适的场合使用合适的存储引擎非常必要。
相关文章推荐
- Myisam和Innodb索引实现的不同(存储结构)
- 聚集索引、非聚集索引、聚集索引组织表、堆组织表、Mysql/PostgreSQL对比、联合主键/自增长、InnoDB/MyISAM(引擎方面另开一篇)
- MyISAM与InnoDB索引结构
- MyISAM和InnoDB索引实现对比
- InnoDB逻辑存储结构
- 对比比较MySql innodb 和 MyIsam 两种存储引擎的文件存储结构
- MyISAM 和 InnoDB 中索引使用的区别
- MyISAM与InnoDB的索引实现
- myisam、innodb物理结构
- Sql Server中的表组织和索引组织(聚集索引结构,非聚集索引结构,堆结构)
- 深入浅出分析MySQL MyISAM与INNODB索引原理、优缺点分析
- 覆盖索引---MyISAM 与 InnoDB
- Innodb、MYISAM的文件存储结构
- MyISAM 和 InnoDB 中索引使用的区别
- InnoDB引擎的索引和存储结构
- MySQL中MyISAM和InnoDB对B-Tree索引不同的实现方式
- B树和B+树 及 MyISAM和InnoDB存储引擎的B+树存储索引的实现
- 从并发和索引说说innodb和myisam的区别
- MySQL之索引1 --- MyISAM和InnoDB索引实现的不同
- mysql两种表存储结构myisam和innodb的性能比较测试