B树[概念]

news/2024/7/24 5:08:30 标签: 数据结构, , b树

文章目录

  • 1 B-Tree
  • 2 B+Tree


1 B-Tree

B-Tree,B是一种多叉路衡查找,相对于二叉,B每个节点可以有多个分支,即多叉。以一颗最大度数(max-degree)为5(5阶)的b-tree为例,那这个B每个节点最多存储4个key,5个指针:
请添加图片描述
的度数指的是一个节点的子节点个数。

我们可以通过一个数据结构可视化的网站来简单演示一下.

请添加图片描述
插入一组数据: 100 65 169 368 900 556 780 35 215 1200 234 888 158 90 1000 88 120 268 250 。然后观察一些数据插入过程中,节点的变化情况。
请添加图片描述
特点:

5阶的B,每一个节点最多存储4个key,对应5个指针。
一旦节点存储的key数量到达5,就会裂变,中间元素向上分裂。
在B中,非叶子节点和叶子节点都会存放数据。

2 B+Tree

B+Tree是B-Tree的变种,我们以一颗最大度数(max-degree)为4(4阶)的b+tree为例,来看一下其结构示意图:

请添加图片描述
我们可以看到,两部分:

绿色框框起来的部分,是索引部分,仅仅起到索引数据的作用,不存储数据。
红色框框起来的部分,是数据存储部分,在其叶子节点中要存储具体的数据。

我们可以通过一个数据结构可视化的网站来简单演示一下。

请添加图片描述
插入一组数据: 100 65 169 368 900 556 780 35 215 1200 234 888 158 90 1000 88
120 268 250 。然后观察一些数据插入过程中,节点的变化情况。

请添加图片描述
最终我们看到,B+Tree 与 B-Tree相比,主要有以下三点区别:

所有的数据都会出现在叶子节点。
叶子节点形成一个单向链表。
非叶子节点仅仅起到索引数据作用,具体的数据都是在叶子节点存放的。

上述我们所看到的结构是标准的B+Tree的数据结构,接下来,我们再来看看MySQL中优化之后的B+Tree。
MySQL索引数据结构对经典的B+Tree进行了优化。在原B+Tree的基础上,增加一个指向相邻叶子节点的链表指针,就形成了带有顺序指针的B+Tree,提高区间访问的性能,利于排序。

请添加图片描述


http://www.niftyadmin.cn/n/563829.html

相关文章

Vue----Class 与 Style 绑定

文章目录Class 与 Style 绑定1 动态绑定 HTML 的 class2 以数组语法绑定 HTML 的 class3 以对象语法绑定 HTML 的 class4 以对象语法绑定内联的 styleClass 与 Style 绑定 在实际开发中经常会遇到动态操作元素样式的需求。因此,vue 允许开发者通过 v-bind 属性绑定…

小程序----组件

文章目录1 小程序中组件的分类2 常用的视图容器类组件2.1 view 组件的基本使用2.2 scroll-view 组件的基本使用2.3 swiper 和 swiper-item 组件的基本使用2 常用的基础内容组件2.1 text 组件的基本使用2.2 rich-text 组件的基本使用3 其它常用组件3.1 button 按钮的基本使用3.2…

小程序----API

文章目录1 小程序 API 概述2 小程序 API 的 3 大分类1 小程序 API 概述 小程序中的 API 是由宿主环境提供的,通过这些丰富的小程序 API,开发者可以方便的调用微信提供的能力,例如:获取用户信息、本地存储、支付功能等。 2 小程序…

小程序----数据绑定

文章目录1 数据绑定的基本原则2 在 data 中定义页面的数据3 Mustache 语法的格式(插值表达式)3.1 Mustache 语法的应用场景3.2 动态绑定内容3.3 动态绑定属性3.4 三元运算3.5 算数运算1 数据绑定的基本原则 在 data 中定义数据在 WXML 中使用数据 2 在 d…

小程序----事件绑定

文章目录1 事件1.1 小程序中常用的事件1.2 事件对象的属性列表1.2.1 target 和 currentTarget 的区别1.3 bindtap 的语法格式1.4 在事件处理函数中为 data 中的数据赋值1.5 事件传参1.6 bindinput 的语法格式1 事件 事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染…

C#自学记录_序

C#自学记录自我介绍些这些的目的学习工具学习方法自我介绍 简单来说 野生码农一枚,对编程有一点的兴趣,完全0基础自学。 些这些的目的 发现自己最近懒了,就像说记录下自己的学习轨迹。通过些博客的方式试试看能不能对抗懒癌。 总之我这一辈…

MySQL----SQL性能分析

文章目录SQL性能分析1 SQL执行频率2 慢查询日志2.1 查询慢日志是否开启2.2 查询慢日志的时间2.3 查看慢日志文件中记录的信息3 profile详情3.1 查询是否支持 profile3.2 查询 profile 是否开启3.3 开启 profile3.4 查看每一条SQL的耗时基本情况3.5 查看指定query_id的SQL语句各…

C#设计模式_建造型设计模式

C#自学记录_抽象工厂作用应用场景举例生产型企业排产步骤具体实例抽象工厂的分析作用 将一组对象的创建挪至抽象工厂类解耦,增加程序的可扩展性 应用场景举例 生产型企业排产 由于季度,或者政府监管的因素,导致之前的排产规则不能或者暂时…