[INNODB]ibd文件之索引页页目录(Directory slot)

B+树的具体体现在于非叶子节点,用于标识范围并指向叶子节点页,也就是说,通过某个索引,我们无法获得具体的行位置,只能获得行所在的叶子页。所以非叶节点就是B+树的非叶子页,用于范围索引,而叶子页就是B+树的叶子页,用于存储数据。

我们在定位到了叶子页后,我们还需要检索叶子页的数据,这个检索需要由页目录来进行二分查找来找到具体的行数据。同时由于非叶节点页也有页目录,我们也可以通过页目录来快速的定位到某个节点而不是从根节点进行遍历进行判断,从而加快找到某个大范围。

这儿的大范围指的是将索引节点又划分了一次范围。比如索引节点有以下几个值:

infimum 4 8 12 16 20 24 28 32 36 40 supremum

按照正常的B+树索引查找,我们是从infimum进行顺序查找来查找到key是否落在索引节点的范围内。为了快速进行查找,innodb的索引页中都有页目录,在这儿生成的页目录为:

infimum(1) 12(3) 28(4) supremum(4)

后面括号内的值为该槽所拥有的记录数,未标明的也就是0,不存在于页目录中,假设存在于页目录中,其值必定大于0。也就是我们假如将括号内的值相加,获得的值,正好是索引节点数,也就是12个。

我们在查找页目录的时候,主要是查找范围,假设我们要查找的某个值落在了某个页目录之前并大于之前的目录值,那么我们就可以从该目录指向的值和它之前的拥有记录数-1个记录进行查找。

举个例子,假设在这儿,我们需要查找值24。我们通过以上的规则可以知道,24小于目录值28,该目录拥有4个索引记录(包括自己),

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值