B-Tree 和 B+Tree详解

本文详细介绍了B-Tree和B+Tree的概念、插入与删除操作,揭示了它们在数据库索引中的作用。B-Tree适用于Oracle和MongoDB,通过节点分裂和合并保证平衡,而B+Tree增加了数据的紧密性和查询稳定性,特别适合全表扫描。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是B-Tree

B-Tree又叫做B树,和平衡二叉树不同的地方在于B树是多叉树(平衡多路查找树),OracleMongoDB的索引技术就是基于B树的数据结构,B树也可以看作是对查找树的一种扩展。

一个m阶的B-Tree有以下性质:

  • 每个节点最多有m个子节点
  • 每个非叶子节点(根节点除外)至少含有m/2个子节点
  • 如果根节点不是叶子节点,那么根节点至少有两个子节点
  • 每个节点上,所有的关键字都是有序的,从左到右,依次从小到大排序
  • 每个关键字的左子树的均值小于当前关键字,右子树的均值大于当前关键字
  • 每个节点都存有索引和数据
  • 对于一个非叶子节点而言,它最多能存储m-1个关键字
  • 所有叶子节点位于同一层
    python

1.B-树插入

对于一个m阶B树,新节点一般是插在叶子层,但是需要根据实际的情况考虑是否需要裂变。

  • 若该节点中关键码个数小于m-1,则直接插入
  • 若该节点中关键字个数等于m-1,则将进行分裂,以中间关键字为界点将节点一分为2,产生一个新的节点,并把中间那个关键字插入到父节点中,继续判断父节点的关键字个数是否等于m-1,依次判断是否分裂,最坏情况下可一直分裂到根节点,整个树增加一层。
  • <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值