B+树的介绍及查询过程:

B+树:是一种自平衡树数据结构,他保持数据排序;在进行搜索、顺序访问、插入和删除的复杂度是O(log n)且B+树只在叶子节点中存放数据,所以消除了一些B树的缺陷

B+树是一个M路搜索树,具有一下特征;

  • 他是完美平衡的---每个叶节点都在相同的深度
  • 除跟之外的每个节点,至少是半满的M/2-1<=keys<=M-1
  • 每个具有k个键的内部节点都有k+1个非空子节点

B+树节点特性:

  • 每个B+树节点都由一组键/值对组成
  • 键源自索引所基于的属性
  • 值将根据节点被分类为内部节点还是叶节点而有所不同。

叶子节点的两个方案:

        Record Ids:指向索引条目对应的元组位置的指针

        Tuple data:

                1)元组的实际内容存储在叶节点中

                2)二级索引必须将记录ID存储为他们的值

B+树的查询操作:

单个元素:设置访问元素为59

1)第一次访问时候访问磁盘的时候访问到了第一层找到到了key(主键)的id值59和97,且访问的59是左节点的最大数和97是右节点的最大数,判断所访问的元素是否小于等于59,是的话走左节点到达了第二层

2)第二层访问的时候,发现访问key的id值是15、44、59,且发现keyid值59是大于44且小于等于59(这里采用二分查找)所以访问第三个孩子节点

3)在访问第三层叶子节点的时候查找到keyid值51、59处,在做一个顺序的查找,然后在内部进行遍历查找,然后找到key的id值对应下的数据。

B+树插入操作:

在B+树中插入关键字时候,要注意一下几点:

插入操作全部都在叶子节点上进行,且不能破坏关键字自小而大的顺序;由于B+树中各个节点中存储的关键字的个数有明确的范围,做插入操作可能会出现节点中关键字关键字的个数超过阶数的情况,此时需要将该节点进行分裂。

  1. 如果被插入关键字所在的节点,其中含有关键字数目小于阶数M,则直接插入;
  2. 若被插入关机案子所在的节点,其中含有关键字数目等于阶数M,则需要将该节点分裂为两个节点,一个节点包含[M/2],另一个节点包含[M/2]。同时,将[M/2]的关键字上移至其双亲节点。假设其双亲节点中包含的关键字个数小于M,则插入操作完成。
  3. 在第2种情况中,如果上移操作导致其双亲节点中关键字个数大于M,则应继续分裂其双亲节点。
  4. 若插入的关键字不比当前节点中的最大值还要大,破坏了B+树中从根节点到当前节点的所有索引值,此时需要及时修正后,在做其他操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值