在上一篇漫画中,我们介绍了B-树的原理和应用,没看过的小伙伴们可以点击下面的链接:

漫画:什么是B-树?

这一次我们来介绍B+树。

—————————————————

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

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

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

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

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

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

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

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

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

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

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

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

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

第一次磁盘IO:

第二次磁盘IO:

第三次磁盘IO:

B-树的范围查找过程

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

中序遍历到元素6:

中序遍历到元素8:

中序遍历到元素9:

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

B+树的范围查找过程

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

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

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

B+树的特征:

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

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

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

B+树的优势:

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

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

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

—————END—————

漫画:什么是B+树?相关推荐

  1. 漫画:什么是树状数组?

    我们学习数据结构的目的在于将我们的算法变得更快.由 Peter M. Fenwick 提出的树状数组 BIT 结构就是一个优秀的数据结构,BIT 全称 Binary Indexed Trees 结构, ...

  2. MySQL的InnoDB索引结构为啥选用B+树?

    如果把数据库中的数据当做1个词典,那索引就是字典的目录,其目的是提升查找数据的速度. 树的数据结构天然适合查找操作,最先被想到就是搜索二叉树. 搜索二叉树 二叉树(Binary Search Tree ...

  3. 【漫画】以后在有面试官问你AVL树,你就把这篇文章扔给他。

    S 推荐阅读 对于另一半,你真正的爱过吗? 背景 西天取经的路上,一样上演着编程的乐趣..... 1.若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值. 2.若它的右子树不为空,则右子树上 ...

  4. 漫画 | 为什么 MySQL 数据库要用 B+ 树存储索引?

    作者 |  channingbreeze 责编 | 郭芮 小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司. 话说两个多月前,小史通过了A厂 ...

  5. 漫画:唐玄奘教你横扫 AVL 树面试题无敌手!

    西天取经的路上,一样上演着编程的乐趣..... 作者 | 帅地 责编 | 胡巍巍 二叉查找树 1.若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值. 2.若它的右子树不为空,则右子树上所有 ...

  6. 课堂 教程 小希与阿树漫画 前端

    Ecshop电子商务系统文件结构及源码剖析 中国这10家慕课网站,您需要知道! 量子通信概念股龙头股有哪些 了解股票 一点就行 傅佩荣教授经典讲座 易成文化网 前端大牛们都学过哪些东西? good 很 ...

  7. 漫画叙述B+树和B-树,很值得看!

    转载自:伯乐专栏作者/玻璃猫,微信公众号 - 梦见 漫画:什么是b+树 这一次我们来介绍 B+ 树. 一个m阶的B树具有如下几个特征: 1.根结点至少有两个子女. 2.每个中间节点都包含k-1个元素和 ...

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

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

  9. 漫画算法:什么是 B+ 树?

    https://mp.weixin.qq.com/s/QGepgMbHQ8JeRxVQwAwsxQ 漫画算法:什么是 B+ 树? 2017-07-14 程序员的那些事 (点击上方公众号,可快速关注) ...

  10. mysql存储base64位用什么类型_【漫画】面试现场:为什么MySQL数据库要用B+树存储索引?...

    推荐阅读:MySQL最全整理(面试题+笔记+导图),面试大厂不再被MySql难倒! 小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT互联网公司. 话说 ...

最新文章

  1. Python笔记_第四篇_高阶编程_正则表达式_3.正则表达式深入
  2. 本地搭建Dubbo监控中心的安装步骤
  3. Taro+react开发(68):页面数据太长不走url走localstorage
  4. 技术分享连载(八十九)
  5. 微信 小程序组件 焦点切换
  6. 一身的债务,信用卡还逾期,我一个女的,怎么办?
  7. Python3连接SSH服务器并下载日志文件
  8. 计算机软考知识点总结,系统分析师历年计算机软考复习知识点总结(10)
  9. html 栏目切换幻灯片效果,JS实现的幻灯片切换显示效果
  10. 远区场matlab仿真,matlab结题报告(电偶极子的辐射场)博客_0.doc
  11. 与我十年长跑的女朋友就要嫁人了
  12. 从0开始的appium+Android+python自动抢红包世界生活
  13. Java中submit的方法,线程池中 submit()和 execute()方法区别
  14. 山东农业大学考研计算机专业分数,山东农业大学研究生分数线
  15. 最全各国人口数据,人口的高出生率与高死亡率竟然是这些国家
  16. 判断字符串子序列--HW
  17. vba 读取linux换行符,【VBA研究】清除字符串中的回车换行符
  18. 使用Jasypt对SpringBoot配置文件加密(数据源为SpringBoot默认的数据源HikariDataSource)
  19. 链安团队漏洞分析连载(第一期)一一溢出漏洞
  20. 求知若饥,虚心若愚Stay Hungry, Stay Foolish--2005斯坦福大学05年毕业演讲

热门文章

  1. TableView载入WebView的一些小技巧 By 徐
  2. Fedora17安装QQ2012手记
  3. 引用类型和值类型区别(一)
  4. MVC进阶学习--HtmlHelper控件解析(五)
  5. java学生管理系统oracle_基于Java的Oracle学生成绩管理系统
  6. flume学习(五):使用hive来分析flume收集的日志数据
  7. 使用git+Jenkins部署代码
  8. 使用数据库引擎优化顾问添加建议索引
  9. 如何动态确认每个输入的值都符合设定域
  10. URL对象中前而几个方法都非常容易理解,而该对象提供的openStream()可以读取该 URL资源...