MySQL索引数据结构那些事

2018-06-10

MySQL索引的数据结构

1.B-tree

B-tree为了能加快访问速度,是一种多路自平衡搜索树,B-tree允许每个节点有更多子节点。

mysql_index-1

B-tree(m叉树)特点如下

与B-tree的不同点

mysql_index-2

B-tree 查找文件29的过程 mysql_index-3

  1. 根据根节点指针找到文件目录跟磁盘块1,将其中信息导入到内存中(磁盘IO一次)
  2. 此时位于磁盘块1中有两个文件17,35,由17<29<35可得知指针P2
  3. 根据指针P2指向的磁盘块找到磁盘块3,将信息导入内存中(磁盘IO二次)
  4. 此时位于磁盘块1中有两个文件26,30,由26<29<30可得知指针P2
  5. 根据p2指针,我们定位到磁盘块8,并将其中的信息导入内存。(磁盘IO三次)
  6. 此时内存中有两个文件名28,29。根据算法我们查找到文件29,并定位了该文件内存的磁盘地址

3.哈希索引(自定义哈希索引,InnoDB自适应哈希索引)

MySQL只在memory引擎显示支持哈希索引
哈希索引

所有文章