数据库相关树结构

平衡二叉树
基于二分法的策略提高数据查找速度的一种二叉树数据结构
相比于一般的二叉树结构,平衡二叉树采用一些算法(旋转等)保证数据的左右两边的节点深度相差不会大于1. 保证数据在二叉树上是分布平衡的。

  1. 非叶子节点最多两个子节点
  2. 非叶子节点值大于左边子节点,小于右边子节点
  3. 非叶子节点左右两边层级数相差不大于1

红黑树
一种二叉查找树,但在每个节点增加一个存储位表示节点的颜色,red、black。通过对从根节点到叶节点路上颜色的限制,保证没有一套路径比其他路径长出两倍(弱平衡二叉树)。

  1. 根节点是黑的
  2. 每个叶节点都是黑的
  3. 如果一个节点是红的,那么两个儿子都是黑的
  4. 任意节点的子节点到叶子节点的路径都包含相同数目的黑节点。

B树
B数属于多叉树,M路平衡查找树
5. 每个节点存放多个关键字,按照左小右大的原则排序
6. 根节点至少两个孩子
7. 非根节点至少有M/2(向上取整)个孩子,至多M个孩子
8. 每个非根节点至少有M/2-1(向上取整)个关键字,最多M-1个关键字
9. 关键字之间的孩子节点的值介于两者之间
10. 所有叶子在同一层

当关键字数大于等于M时,进行分裂,将中间的关键字向上提。
每个节点都包含关键字以及相关数据行。

B+树(分裂、合并)
B树升级版,相比于B树充分利用节点空间 ,查询速度更加稳定,速度接近于二分查找。

  1. B+树的非叶子节点不存包关键字记录的指针,只进行数据索引,这样使得每个节点能保存的关键字大大增加。
  2. B+树叶子节点保存了父节点以及关键字记录指针,所有数据地址必须到叶子节点才能获取到
  3. 叶子节增加指向其他叶节点指针,从小到大排序,

在这里插入图片描述

为什么MySQL数据库索引使用B+树?

  1. B+树的磁盘io次数更少:每个非叶节点可以保存更多的关键字,因此树的整体高度会较低,相对IO读写次数降低
  2. B树查询更加稳定:所有数据位于叶子节点
  3. B+树全局遍历只需要从最小值按照节点之间的索引搜索一遍即可,B树还需要中序遍历
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值