【数据结构】

B树和B+树的理解

可以从以下几个方面去理解

第一个:B树和B+树的产生背景

当我们执行一个select查询语句时,InnoDB需要从磁盘上去读取数据,都知道磁盘IO慢如蜗牛

了解一下磁盘的工作机制就知道 当我们需要从磁盘中去获取一条数据

首先需要系统把数据的逻辑地址传给磁盘,磁盘控制线路按照寻址的逻辑,把逻辑地址翻译成物理地址

从而确定要读取数据在那个磁道那个扇区,为了读取到对应扇区的数据,需要把磁头放在对应的扇区上面

为了实现这样一个点 就需要磁盘不断的去旋转,把目标扇区旋转到磁头下面,使得磁头能够找到对应的磁道

这里的寻道时间和旋转时间是有一个大的损耗,也是磁盘IO慢的原因

第二个:B树和B+树产生的意义

因为磁盘IO很慢,所以他产生的主要意义是,在查询时 减少磁盘IO 提高查询的效率

第三个:什么事B树什么是B+树

B树是由二叉树、二叉查找树进化而来的多路平衡查找树

所谓二叉树是指每个节点最多支持两个分叉 相比于单向链表来说他多了一个分支,

二叉查找树是指在二叉树的基础上去增加了一个规则,左子树的所有子节点都小于根节点,

右子树的所有子节点都要大于根节点;二叉查找树可能会出现斜树的问题,导致时间复杂度增加,

因此又引入了平衡二叉树机制:它具有二叉查找树的所有特点。又增加了一个规则,

他左右两个子树的高度差绝对值不能超过1,平衡二叉树为了达到这样一个平衡,

所以引入了左旋右旋机制去实现输的平衡

而B树他是一种多路平衡查找树,他满足平衡二叉树的规则同时又拥有更多的子树,子树的数量

取决于关键字的数量,

所谓B+树是在B树的基础上做了增强,最大区别有两点:第一个B树的数据存储在每个节点上

而B+树是吧数据存储在叶子节点上,并通过连表的方式把叶子节点的所有数据进行 一个连接

第二点:B+树的子路数量等于关键字的数量

综上所述:B+树比B树更矮更胖 ,数的高度就是磁盘IO的次数,通过减少磁盘IO,

从而在mysql中有更好的查找性能

红黑树:

散列表:

链表:

队列:

栈:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值