码迷,mamicode.com
首页 > 数据库 > 详细

MYSQL INNODB索引

时间:2015-04-07 07:21:44      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:mysql 索引优化

    

    在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索引

标签:mysql 索引优化

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!