MySql B树 B+树

什么是叶子节点?

想象你有一本书,书中的每一页都是一个节点。在这本书里,有些页面包含的是目录或章节标题(这些可以类比为内部节点),而另一些页面则包含了实际的内容,比如故事、文章或者数据记录(这些是叶子节点)。叶子节点就是存储真实数据的最终位置,在树结构中它们位于最底层,没有子节点。

在B树中

内部节点:类似于书中的目录页,它们包含分隔值(例如字母A, C, M等)和指向子节点(下一页)的指针。当你查找数据时,根据你要找的数据范围来决定应该去哪个子节点。

叶子节点:这是存放实际数据的地方。在B树中,叶子节点也会存储一些数据,并且所有的叶子节点都处于同一层。

在B+树中

内部节点:与B树相似,它们只包含用于指引方向的分隔值和指向子节点的指针,但不存储任何用户数据。

叶子节点:所有的真实数据记录都存放在叶子节点上。此外,这些叶子节点之间通过指针相互链接,形成一个链表结构,这使得你可以从一个叶子节点快速移动到下一个叶子节点,非常适合范围查询。

具体例子

假设我们有一个按名字排序的电话簿:

B树的情况:

复制代码
内部节点 (A, D, G)
    / | \
   /  |  \
叶节点(Alice) 叶节点(David, Emily) 叶节点(George, Helen)

在这个例子中,如果你要找"Emily",你会先看根节点的分隔值,发现"Emily"落在D和G之间,于是你前往中间的那个叶子节点,然后在那里找到Emily的信息。

B+树的情况:
复制代码
内部节点 (A, D, G)
    / | \
   /  |  \
叶节点(Alice) -> 叶节点(David, Emily) -> 叶节点(George, Helen)

这里,所有的数据都在叶子节点上,而且叶子节点之间有额外的链接。如果你要找"Emily",过程与B树类似,但是如果你想要找出所有以"D"开头的名字,你可以从第一个匹配的叶子节点开始,沿着链表向右遍历,直到超出范围为止。

那我可不可以这样理解 就是 B树 的数据存放再叶子节点 B+树的数据也存在叶子节点 他们最大的区别就是B+树的叶子节点用指针连接起来了?

是可以这样理解 但是还需要做些补充:

数据存储位置

  • B树 和 B+树 的确都将数据存储在叶子节点中。但是,在标准的B树中,内部节点也可能包含一些数据(键值),而不仅仅是分隔值和指向子节点的指针。这意味着在B树中,你有可能在非叶子节点上找到部分数据。
  • B+树 则明确规定所有用户数据仅存放在叶子节点中,内部节点只用于指引方向,不存储用户数据。这使得B+树的每个内部节点可以容纳更多的分隔值,从而减少了树的高度,提高了查询效率。

叶子节点链接

  • B+树 的叶子节点之间确实通过指针相互链接,形成了一个双向链表结构。这一特性使得B+树非常适合范围查询,因为你可以从一个叶子节点开始,沿着链表快速访问相邻的叶子节点,直到找到所有符合条件的数据。
  • B树 的叶子节点通常不会相互链接,因此对于范围查询的支持不如B+树高效。每次进行范围查找时,可能需要重新从根节点开始遍历树结构,直到找到下一个匹配的叶子节点。

"B树的数据存放再叶子节点,B+树的数据也存在叶子节点,他们最大的区别就是B+树的叶子节点用指针连接起来了"------是正确的,,但还有一点细微差别在于B树的内部节点也可以存储数据,而B+树的所有用户数据都集中在叶子节点,并且这些叶子节点之间有额外的链接以支持高效的范围查询。

在MySQL的InnoDB存储引擎中,采用的是B+树结构,它不仅将所有数据存储在叶子节点中,而且叶子节点之间的链接使得范围查询更加高效。这种设计优化了磁盘I/O性能,特别适合于数据库应用中的大量读写操作。

在MySQL的InnoDB存储引擎中使用的是B+树结构

相关推荐
大气层煮月亮34 分钟前
Oracle EBS ERP开发——报表生成Excel标准模板设计
数据库·oracle·excel
云和数据.ChenGuang44 分钟前
达梦数据库的命名空间
数据库·oracle
三三木木七1 小时前
mysql拒绝连接
数据库·mysql
蹦跶的小羊羔1 小时前
sql数据库语法
数据库·sql
唐古乌梁海1 小时前
【mysql】InnoDB的聚簇索引和非聚簇索引工作原理
数据库·mysql
我变秃了也没变强1 小时前
pgsql配置密码复杂度策略
数据库·postgresql
PawSQL1 小时前
企业级SQL审核工具PawSQL介绍(1) - 六大核心能力
数据库·sql·oracle
幼稚园的山代王1 小时前
NoSQL介绍
数据库·nosql
꒰ঌ 安卓开发໒꒱2 小时前
Mysql 坏表修复
android·mysql·adb
猫林老师2 小时前
HarmonyOS线程模型与性能优化实战
数据库·分布式·harmonyos