为什么数据库不使用二叉树、红黑树、B树、Hash表? 而是使用了B+树

为什么数据库不使用二叉树、红黑树、B树、Hash表? 而是使用了B+树





二叉树

如果使用二叉树,在最坏的情况下会退化为链表形态,变成了顺序查找,遍历整个链。
当数据量大的情况下,层数会不受控的增多,导致效率低下。
在这里插入图片描述

红黑树

红黑树但是一种特殊的平衡二叉树,他不会出现二叉树中的最坏情节,他会进行平衡。
但是也有一个问题,就是由于他还是属于二叉树,一个父节点只能跟着2个子节点。如果存在几千万数据,那么红黑树会非常的深同样需要大量io操作,这样一句无法快速的查找到我们想要的数据了。
在这里插入图片描述

B树

为了解决树的层数过深导致查询效率低下,每个节点空间过小,所以增大节点空间,将每个叶子节点都存放多个索引元素和对应的多个data。
这样就有效的控制了层数,这样矮胖的树结构,减少了io操作,只需要根据非叶子节点索引元素对比找到应该进入的对应叶子节点查找数据。
在这里插入图片描述

B+树

B树还有一个问题,由于非叶子节点也存放了data数据,占用了大量的空间。B+树中将非叶子节点中的data数据删除,而是单纯的放置冗余索引和对应的节点地址,这样使得一个非叶子节点可以存放更多的冗余索引,查找时,对当前非叶子节点使用二分折半查找。
并且叶子节点中使用指针相连,提高了区间访问性能,支持范围查找。
每一层都是有序存储的。

在这里插入图片描述

B+树的优势

  1. 单一的非叶子节点可以存储跟多的索引元素+地址,使得IO操作减少。
  2. 所有查找的都是查找到最底层的叶子节点,性能查找时稳定的。
  3. 并且叶子节点有有序链表,方便范围查找。






如有错误欢迎指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一只小小狗

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

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

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

打赏作者

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

抵扣说明:

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

余额充值