数据库基础问答(一) —— 为什么B+树更适合做文件索引和数据库索引

其实现有两个背景:

1. B+树本质是棵平衡m叉树,而平衡树就是解决一般多叉树失衡导致性能退化为线性的问题而生的,除了B+树,还有很多平衡树,AVL,红黑树,B树等等。

2. ,现实应用中,大多数的文件系统索引和数据库索引都是用B+树实现的,那么为什么选择了B+树作为其实现呢?

参考资料:sql优化(面试必问一)

这个是有实际证据的,如MySQL中,采用B+树成功限制了,树高,参见:

为什么 MySQL 的索引要使用 B+ 树,而不是其它树?比如 B 树?

经作者实测,高度为3的B+树存了600w+的数据,理论上可以存2000w+。原因上面包括这个链接也提到:

  • InnoDB存储引擎的最小存储单元是页,页可以用于存放数据也可以用于存放键值+指针,在B+树中叶子节点存放数据,非叶子节点存放键值+指针;

  • 索引组织表通过非叶子节点的二分查找法以及指针确定数据在哪个页中,进而在去数据页中查找到需要的数据。

每页大小固定——16K,对于非叶子节点空间可以用于存“key+孩子指针”,由于不含数据(B+树非叶子节点没有数据),所以一页可以存很多项“key+孩子指针”,这意味着最后一层的叶子节点数目 = m^(height - 1)

叶子节点的空间就用来存数据。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值