一个m阶的B树具有如下几个特征:

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

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

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

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

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

image

一个m阶的B+树具有如下几个特征:

1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。

2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。

3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。

image

image

image

image

image

image

image

image

image

image

image

image

image

image

B-树中的卫星数据(Satellite Information):

image

image

B+树中的卫星数据(Satellite Information):

image

需要补充的是,在数据库的聚集索引(Clustered Index)中,叶子节点直接包含卫星数据。在非聚集索引(NonClustered Index)中,叶子节点带有指向卫星数据的指针。

image

image

image

第一次磁盘IO:

image

第二次磁盘IO:

image

第三次磁盘IO:

image

image

image

image

image

image

image

B-树的范围查找过程

自顶向下,查找到范围的下限(3):

image

中序遍历到元素6:

image

中序遍历到元素8:

image

中序遍历到元素9:

image

中序遍历到元素11,遍历结束:

image

image

image

B+树的范围查找过程

自顶向下,查找到范围的下限(3):

image

通过链表指针,遍历到元素6, 8:

image

通过链表指针,遍历到元素9, 11,遍历结束:

image

image

image

image

image

B+树的特征:

1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。

2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。

3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。

B+树的优势:

1.单一节点存储更多的元素,使得查询的IO次数更少。

2.所有查询都要查找到叶子节点,查询性能稳定。

3.所有叶子节点形成有序链表,便于范围查询。

image

转载一个大神关于页分裂情况的讨论

http://hedengcheng.com/?p=525

https://blog.csdn.net/vheroin/article/details/78781709

B树和B+树:漫画转载相关推荐

  1. B树与B+树【转载】

    如果前面的2-3树与2-3-4树理解了,B树也就理解了,因为2-3树就是3阶的B树,2-3-4树就是4阶的B树.所以,对于B树的性质,根据2-3-4树都可以推导出来了,即, 一颗m阶的B树(B-tre ...

  2. 2-3树与2-3-4树【转载】

    2-3树 2-3树是一棵自平衡的多路查找树,它并不是一棵二叉树,具有如下性质: (1)每个节点有1个或2个key,对应的子节点为2个子节点或3个子节点: (2)所有叶子节点到根节点的长度一致: (3) ...

  3. 漫画:什么是B+树,B+树层数计算(面试官直呼内行)

    文章目录 1.什么是B+树 2.B+树层数计算(面试官直呼内行) 1.什么是B+树 一个m阶的B树具有如下几个特征: 1.根结点至少有两个子女. 2.每个中间节点都包含k-1个元素和k个孩子,其中 m ...

  4. 【经典数据结构】B树与B+树(动图看转载)

    本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html 维基百科对B树的定义为"在计算机科 ...

  5. 种树:二叉树、二叉搜索树、AVL树、红黑树、哈夫曼树、B树、树与森林

    虽然今天不是植树节,但是我今天想种树. 文章目录 树,什么是树? 二叉树 定义 二叉树的创建 二叉树的前中后序遍历 前序遍历: 中序遍历 后序遍历 已知前序.中序遍历结果,还原二叉树 已知后序.中序遍 ...

  6. AVL树、splay树(伸展树)和红黑树比较

    AVL树.splay树(伸展树)和红黑树比较 一.AVL树: 优点:查找.插入和删除,最坏复杂度均为O(logN).实现操作简单 如过是随机插入或者删除,其理论上可以得到O(logN)的复杂度,但是实 ...

  7. B树,B+树,B-树和B*树

    B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: B ...

  8. B树、B-树、B+树、B*树

    B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: B ...

  9. 模型树——就是回归树的分段常数预测修改为线性回归 对于非线性回归有较好的预测效果...

    说完了树回归,再简单的提下模型树,因为树回归每个节点是一些特征和特征值,选取的原则是根据特征方差最小.如果把叶子节点换成分段线性函数,那么就变成了模型树,如(图六)所示: (图六) (图六)中明显是两 ...

  10. 【UOJ#388】【UNR#3】配对树(线段树,dsu on tree)

    [UOJ#388][UNR#3]配对树(线段树,dsu on tree) 题面 UOJ 题解 考虑一个固定区间怎么计算答案,把这些点搞下来建树,然后\(dp\),不难发现一个点如果子树内能够匹配的话就 ...

最新文章

  1. shell --- awk规范 系统总结
  2. es分布式结构原理是什么?
  3. 超大数据下大批量随机键值的查询优化方案 1
  4. ORz.....-0-
  5. mysql忘记密码解决方法
  6. 成功解决schedule.ScheduleValueError: Invalid time format
  7. ActiveMQ相关存储介绍
  8. Black and white
  9. Python在信号与系统(1)——Hilbert兑换,Hilbert在国家统计局的包络检测应用,FIR_LPF滤波器设计,格鲁吉亚也迫使高FM(PM)调制...
  10. 超给力,抛弃手动维护,一键生成数据库文档、支持多种格式!
  11. 使用wmi显示rpc服务器不可用,详解WMI RPC 服务器不可用的解决方案
  12. python从指定文件夹导入模块_python – 从特定文件夹导入模块
  13. PHP连接mysql数据库使用方法,PHP连接MySQL数据库的操作方法
  14. PHP获取访客ip、系统、浏览器等信息[转]
  15. Systemverilog:面向对象编程与面向过程编程区别
  16. php中左移和右移,c语言左移和右移的示例详解
  17. 武汉大学计算机学院 优秀夏令营,武汉大学计算机学院2014年优秀大学生暑期夏令营通知.docx...
  18. 粤港澳大湾区第一届量子科技与产业应用研讨会在穗成功举办
  19. Dell戴尔Inspiron 1440 驱动下载XP
  20. java教师和学生类的继承代码_Java用继承和实现完成学生,教师和家长三个类

热门文章

  1. python绘图查看支持的字体,解决中文空格现象
  2. 测试nfc功能软件,一般app测试的最佳方法
  3. Linux连接荣耀路由器pro2,华为荣耀路由器pro怎么设置(2)
  4. 触动精灵学习笔记(1)
  5. 1、centos命令--fuser
  6. qualcomm amss 文件结构以及编译流程分析
  7. 创意毕业答辩通用PPT模板
  8. mysql时间戳 时间转换问题 from_unixtime() UNIX_TIMESTAMP()
  9. 人工智能如何改变半导体的分层技术
  10. JAVA火影忍者究极冲击_火影忍者究极冲击