B树和B+树傻傻分不清楚?

B树

在这里插入图片描述

  1. B树的每个结点包含关键字数据本身
  2. B树规定绝对平衡,使得查找效率变高
  3. 叶子结点是失败结点,将(-∞,+∞)划分成了n+1个区间
  4. B树就是一个m叉查找树

B+树

在这里插入图片描述

  1. B+树的每个结点仅存放关键字不放数据本身
  2. B+树规定绝对平衡,使得查找效率高
  3. 叶子结点是每个关键字+数据
  4. B+树类似于索引查找

为什么数据库使用B+树实现呢?

  • B+树,每个结点不存放数据,那么相同数据下,B+树会更低,查找效率高。
  • B+树,叶子结点才是每个数据,叶子结点还连接起来,形成链表,支持单链表的查询。
  • 我们在选择主键(关键字)时候,选择int类型,自增的是最好的。因为这样,在每一次插入数据时,都会往链表最后插。如果别的类型做主键,可能下一条数据插到链表中间,这样会导致树的调整,引起性能消耗。

B+树能存放多少数据呢

在B+树中,一个结点存放的是一个数据页,默认是16KB。
数据页又区分为结点页、叶子页。结点页只存放关键字,叶子页存放关键字和真实数据。所以假设结点页能存放1000个关键字,叶子页能存放100个记录。
那么对于一个3层高的B+树,能存放的数据量是:1000 * 1000 * 100 = 1亿条 行数据。
所以,在1亿条数据中只需要3次IO,加载3个页面,即可找到需要的数据。
并且在一个页面中,关键字会组成一个顺序存储的数组,直接二分查找,找到需要的关键字。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值