mysql tree 节点级别_Mysql B-Tree和B+Tree索引

Mysql B-Tree和B+树索引

Mysql加快数据查找使用B-Tree数据结构存储索引数据,InnoDB存储引擎实际使用B+Tree。下面首先介绍下B-Tree和B+Tree的区别:

一、B树和B+树索引(手绘图简要说明)

1.B-Tree索引:

7581303f10903942644dc4d8ca4f0d25.png

2.B+Tree索引:

fd50f661c1d2da82da9719b4e50fa716.png

3.B-Tree 和B+Tree索引查找原理:

非叶子节点存储索引关键字,叶子节点指针指向的是被索引的数据。节点槽中存放了指向子节点的指针(可以理解为两个关键字之间),存储引擎根据这些指针向下层查找。通过比较节点页的值和要查找的值可以找到合适的指针进入下层子节点,这些指针实际上定义了子节点页中值的上限和下限。

4.B-Tree 和B+Tree索引不同点:

1)B-Tree非叶子节点不仅存储索引关键字还保存除关键字外的其他字段信息,而B+Tree非叶子节点只保存索引关键字。

2)  B+Tree叶子每个叶子节点保存了指向下一叶子节点的指针(链表串联),而B-Tree没有。

扩展:MySQL的InnoDB引擎索引要使用B+树而不是B树

(因为B树不管叶子节点还是非叶子节点,都会保存数据,这样导致在非叶子节点中能保存的指针数量变少(有些资料也称为扇出)

指针少的情况下要保存大量数据,只能增加树的高度,导致IO操作变多,查询性能变低;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>