索引的底层实现——高性能Mysql(第五章笔记1)

我们知道,数据库的底层索引,都是由B类树实现的。

什么是B类树?为什么选用B类树呢?

这是我们需要探寻的。

在学习B类树之前,还是先复习一下平衡二叉树的知识

平衡二叉树查找
一个顶点两个叉(叶子)。

左右高度差不超过1。如果超过,则需要左右旋转来重新保持平衡。

左边子结点小于父结点,右边子结点大于父结点。(大小规则,自定义)

这样,查找的话,每次比较查找的值与节点的值,从而判断是从左还是从右边下去,可以将查找比较次数降低到不足Log(n),n为结点数。

那B树跟二叉平衡树有什么差别呢?

B树的叉更多了,二叉树就2个叉,要么左,要么右,B树可以有更多的叉(2个叉不够用了)。用术语来讲的话,叫B树的阶M,我们说的有几个叉值=M-1
B树图示
查了半天,个人觉得该篇文章讲的更清晰一点。B树、B+树

查资料的过程中,发现有的文章把B树跟B-树分成两个概念,其实是不对的,因为B树的英文就叫B-Tree。。。这是翻译的锅。

B树看下来也就是叉多了一点,从根节点到叶子节点,都是保存有数据的,值离根节点越近,那么需要查找比较的次数也就越少。
在这里插入图片描述
这篇也挺好

那B+树跟B树有啥区别呢?

B+树图示
从图比较,很明显,下面多了一条线把最后一层的值都串起来了
而且上面的树形值与下面的值有重复哦。为啥?

因为B+树只有下面一层的值才是真正的值,上面的树形只是索引用的,不是用来保留数据的。

大家都在同一层居住,那么从根节点开始拜访的话,到每个值的高度都是相同的。比较稳定。

具体如何左旋右旋,如何分离节点,合并节点,大家各自去查找吧,这边就不再赘述了,下一章我们来学习高性能索引。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rgbhi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值