b树,以及b+树的构建,以及mysql底层索引的原理

B-Tree:

M阶的Btree的几个重要特性:

1.节点最多含有m颗子树(指针),m-1个关键字(数据)(m>=2);

2.除根节点和叶子节点外,其他每个节点至少有ceil(m/2)个子结点(子树),ceil为向上取整,5/2=3取整,分裂的时候从中间分开,分成两个子树

3.若根节点不是叶子节点,则至少有两颗子树。

 

Btree有个非常重要的操作:当一颗树不满足以上性质的时候会干嘛?红黑树大家已经知道了会左旋右旋变颜色。而是Btree的分裂。

分裂过程如图:

 

 

b树减少了磁盘IO的,增加了查询效率。最重要的是分裂过程构建b树。

缺点是:不能解决范围查询,以及所有点都存数据造成空间浪费,所以MySQL最终选择了b+树

 

b+树:

b+树的3个性质:

1.叶子结点通过双向链表连接

2.非叶子结点不存放数据

3.数据和节点一样多

 

通过图可以看出b+树和b树的区别:

 

 

MySQL底层索引:

MySQL底层索引就是采用b+树的结构,大量减少磁盘IO次数,充分存储了数据。

通过双向链表解决了索引的范围查询

节点存储多个索引,符合了联合索引的左原则。

通过索引关键字的个数及大小,以及页面大小(一次IO查询的数据量),可以计算b+树的阶数

b+树的特点总结:

 

总结:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

end for time

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

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

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

打赏作者

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

抵扣说明:

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

余额充值