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+树结构

相关推荐
TDengine (老段)8 分钟前
TDengine 索引使用指南 — 何时建、怎么建、怎么用
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
ATA888817 分钟前
企业数据库账号安全的技术解决方案
数据库·安全
DB哥讲数据库18 分钟前
MySQL 8.4 安装教程:超详细图文讲解(附mysql安装包)
linux·数据库·mysql·centos
Databend21 分钟前
AST Visitor API 迁移,怎么证明 AI 没改坏 SQL 语义?
数据库·ai编程
TDengine (老段)24 分钟前
TDengine DDL 完整参考 — Database/STable/Table/Column/Tag
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
xlxxy_25 分钟前
sap获取批次特性报表
java·linux·开发语言·前端·数据库·abap·mm
栋***t36 分钟前
从“工具”到“基建”,麦塔在线考试系统经历的时代变局与定位逻辑
java·大数据·数据库·开源软件·无纸化
SelectDB技术团队43 分钟前
Agent 可观测性:Apache Doris / SelectDB 的技术能力、选型对比与实践
数据库·人工智能·agent·可观测·ai-native·apache doris·selectdb
csdn2015_1 小时前
kafka如何确保消息不丢失
数据库·分布式·kafka
wefg11 小时前
【MySQL】MySQL C API 访问 MySQL
数据库·mysql