• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MySQl 目录分析_mysql

mysql 搞代码 7年前 (2018-06-08) 229次浏览 已收录 0个评论

mysql 索引分析

前序: 

索引有多种类型,其中包括主键索引、唯一索引、B+Tree索引(聚集索引和非聚集索引)、哈希索引等等,下面主要深入了解一下B+Tree索引和聚集索引。

 

B+Tree介绍

MySQL是由B+Tree构成的,下面先来介绍一下什么是B+Tree。

 

①B+Tree是为磁盘或者其他直接存取辅助设备而设计的一种平衡二叉树。(这句话怎么理解?)

答:数据库系统的设计者巧妙利用了磁盘预读原理,将一个节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入。为了达到这个目的,在实际实现B+Tree还需要使用如下技巧:每次新建节点时,直接申请一个页的空间,这样就保证一个节点物理上也存储在一个页里,加之计算机存储分配都是按页对齐的,就实现了一个node只需一次I/O。

 

②B+Tree的节点都是按照键值的大小顺序存放的,叶节点之间也通过指针连接起来,为了提高取数据时的效率。

 

具体结构如下图:

MySQl 目录分析_mysql
 

 

B+Tree索引

B+Tree索引包含了聚集索引和非聚集索引。

 

①InnoDB

 

聚集索引:

聚集索引就是按照每张表的主键构造一颗B+Tree,并且叶子节点就是存放的是整张表的行记录数据的数据页,每个数据页之间也通过双向链表进行连接。

 

        
MySQl 目录分析_mysql
 

非聚集索引:

非聚集索引与聚集索引唯一的不同就是非聚集索引叶子节点存放的data是对应的数据聚集索引的key,所以每当访问非聚集索引的数据,其实是走了两个步骤,首先找到聚集索引的key,再通过聚集索引的key找到对应的数据信息。

 

 MySQl 目录分析_mysql

 

②MyISAM

聚集索引和非聚集索引的数据表结构差别不大。叶子节点都存放的是指向数据行信息的指针数据。

 

 

参考文献:《MySQL技术内幕InnoDB存储引擎》

欢迎大家阅读《MySQl 目录分析_mysql》,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySQl 目录分析_mysql

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址