数据库基础概论_B树

数据库中的索引主要有B+树索引和hash索引
问:B+树的实现细节? B-树和B+树的区别,联合索引在B+树中的存储。

为什么要用B+树做索引的存储结构,而不是二叉排序树,按理说。二叉排序树的查找速度和比较次数都是最好的,但是我们不得不考虑一个实际情况
磁盘IO.索引是存储在磁盘上的,当数据量比较大的时候,索引的大小可能有几个G 甚至更多。当利用索引查询的时候,不能把整个索引加载到内存。能做的只有逐一加载每个磁盘页,这里的磁盘页对应着索引树的节点。为了减少磁盘IO次数,我们必须把树结构变得矮胖。这就是B-树的特征之一。
B-树是一种多路平衡查找树,她的每一个节点最多包含k的孩子,k称之为B树的阶,K的大小取决于磁盘页的大小。
下面来具体介绍一下B-树(Balance Tree),一个m阶的B树具有如下几个特征:

1.根结点至少有两个子女。

2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m

3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m

4.所有的叶子结点都位于同一层。

5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。

                                                         

对于3阶B树而言

1.根结点至少有两个子女。

2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m(k在1-3之间  若k =2 则本节点含有一个元素 则其有两个孩子 如果k =3 则其有3个孩子  ??? 如果)

3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m(叶子节点包含的元素个数为1个或者两个)

4.所有的叶子结点都位于同一层。

5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。(父节点的2个元素可以划分出三个区间 一个元素可以分出两个区间)

            通过整个查询流程我们可以看出,B-树在查询中的比较次数其实不比二叉排序树中少,尤其是单一节点中的元素数量很多

的时候,可是与磁盘IO相比,内存的消耗基本可以不计,所有只要树的高度足够低,IO次数足够少,就可以提高查找性能。相比之下节点内部多一点儿元素也没关系。仅仅是多了几次内存的交互,这就是B-树的优势之一。

            B-树的插入操作比较复杂,稍后进行介绍,通过对B-树的插入和删除操作,B-树依旧能够始终维持多路平衡,这正是B-树的一大优势,自平衡。

http://www.sohu.com/a/154640931_478315

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值