首页 > 数据库技术 > 详细

MYSQL INNODB索引

时间:2015-04-07 07:20:04      阅读:247      评论:0      收藏:0      [点我收藏+]

    

    在MYSQL中索引是在存储引擎实现的,所以各个存储引擎中的索引的实现方式是不一样的。本章节主要是学习INNODB存储引擎中最常用的索引类型:聚簇索引和B-Tree索引

   

    在INNODB存储引擎中表其实是oracle中类似的聚簇表而不是普通的堆表。INNODB根据主健的顺序存储数据,数据直接存储在主健的叶子节点上面。数据即索引,索引即数据。因此为了让数据尽可能的按照主健的顺序存储在一起innodb还专门设计了一个Insert buffer机制来保证(但不能百分之百的保证)。如果数据根据主健值随机插入则会导致大量的拆页操作,不仅会影响插入的效率同样会影响其他查询操作增加随机I/O读。

    

    当然聚簇索引按照key的顺序插入数据在某些高并发的情况下也会导致一些其他的问题。比如间隙索和自增锁(如果使用了自增列的话)


    上面提到的主健,如果不指定会怎么样呢? innodb会默认使用第一个唯一索引作为key,如果都不存在则会虚拟出一个key来实现。


    除了主健索引其他的都称之为"二级索引",为什么成之为二级索引呢?


    因为在其他普通的索引(B-Tree索引)中存储的并不是存储的记录的物理地址而是行号(主健值),根据主健值然后在去到聚簇索引中去找到该行的位置,找到了行的位置也即找到了数据。还是因为聚簇索引的"数据即索引,索引即数据"。因此不难理解按照主健插入数据有多么重要了吧。

本文出自 “坚持学习” 博客,请务必保留此出处http://8906256.blog.51cto.com/8896256/1629362

MYSQL INNODB索引

原文:http://8906256.blog.51cto.com/8896256/1629362

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!