B Tree B plus Tree and B star Tree

博客主要介绍了用于索引的B树、B+树和B*树。B树是多路搜索树,具有平衡、节点大小适配等性质;B+树在B树基础上,数据都在叶子层,叶子节点可存更多数据且连成双向链表;B*树在B+树基础上,溢出时给兄弟,不足时合并兄弟,普通节点也加链表。

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

Index

  • Hash
  • linear index(memory or disk)就是一串key/pointer,key是顺序排列的,pointer指向具体记录
    linear-index
  • tree

B tree

多路搜索树,比如2-3 tree 2-3-4 tree=红黑树
CRUD都在那边讲过了,这里贴个图方便对比
b-tree

为了做index的性质

  • balanced:所有叶子都是一层的
  • 一般一个node的大小就是一个page/disk block,最好填满
  • full:m-order B树就是除了根(有>2个孩子)和叶子,每个node有m/2到m个孩子(几路B树就是几个孩子)

B+ tree

在B tree的基础上:

  • 所有真正的数据都在叶子层
  • m路B+树叶子节点可以存>m条
  • 至少半满
  • 所有叶子再连成doubly-linked list
    b+tree

CRUD

C:叶子没满不用说,满了就split

D:保证至少半满,最小化split开销,localize

B* tree

在B+ tree的基础上:

  • overflow的时候塞给兄弟,underflow的时候合并兄弟
  • 普通node上也加linked list
    bstar-tree
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值