您的位置:首页 > 其它

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

两者的索引设计各有优缺点,在合适的场合使用合适的存储引擎非常必要。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: