B+tree 与 B-tree区别

本文详细比较了B树和B+树在索引结构、查询性能和应用场景上的差异,特别强调了B+树在Mysql中作为索引的优势,如高度优化的范围查询和顺序访问能力。

B+树和B树是两种常用的平衡树数据结构,用于索引的构建和查询优化。它们在索引结构和应用场景上具有一些区别。

  1. 索引结构:

    • B树:B树的每个节点包含键和对应的值,叶子节点存储实际的数据记录。B树的内部节点和叶子节点的结构是一致的,节点中的键按顺序排列,并且节点可以存储大量的键值对。
    • B+树:B+树的内部节点只包含键,而不包含对应的值。所有的数据记录都存储在叶子节点中,叶子节点通过链表连接在一起,形成一个有序的数据链表。
  2. 叶子节点:

    • B树:B树的叶子节点存储了实际的数据记录,叶子节点之间并没有连接。
    • B+树:B+树的叶子节点存储了实际的数据记录,并且通过链表连接在一起,形成一个有序的数据链表。这样可以方便范围查询和顺序访问。
  3. 查询性能:

    • B树:B树的查询性能相对较好,适合随机查询和范围查询。由于每个节点都包含了数据记录,B树的查询可以在内部节点中完成,减少了磁盘I/O操作。
    • B+树:B+树的查询性能更优,尤其适合范围查询和顺序访问。因为所有的数据记录都存储在叶子节点中,并且通过链表连接在一起,所以范围查询和顺序访问可以在叶子节点的链表上高效地进行。
  4. 应用场景:

    • B树:B树适用于支持随机访问的场景,例如磁盘文件系统的索引结构,数据库中的索引结构等。
    • B+树:B+树适用于范围查询和顺序访问较多的场景,例如数据库中的范围查询、排序操作等。

总的来说,B树适用于随机查询和范围查询,而B+树适用于范围查询和顺序访问。B+树的优势在于更好的范围查询性能和顺序访问性能,以及更高的存储效率(因为内部节点不存储数据记录)。因此,在大多数数据库系统中,B+树被广泛应用于索引结构的构建。

原理:分批次的将磁盘块加载进内存中进行检索,若查到数据,则直接返回,若查不到,则释放内存,并重新加载同等数据量的索引进内存,重新遍历

结构: 数据  向下的指针 指向数据的指针

特点:

        1,节点排序

        2 .一个节点了可以存多个元索,多个元索也排序了

 

 结构: 数据  向下的指针

特点:

    1.拥有B树的特点

    2.叶子节点之间有指针

    3.非叶子节点上的元素在叶子节点上都冗余了,也就是叶子节点中存储了所有的元素,并且排好顺序

从结构上看,B+Tree 相较于 B-Tree 而言  缺少了指向数据的指针 也就红色小方块; Mysq|索引使用的是B+树,因为索引是用来加快查询的,而B+树通过对数据进行排序所以是可以提高查询速度的,然后通过一个节点中可以存储多个元素,从而可以使得B+树的高度不会太高,在Mysql中一个Innodb页就是一个B+树节点,一个Innodb页默认16kb,所以一般情况下一颗两层的B+树可以存2000万行左右的数据,然后通过利用B+树叶子节点存储了所有数据并且进行了排序,并且叶子节点之间有指针,可以很好的支持全表扫描,范围查找等SQL语句

文章推荐:B-Tree和B+Tree的区别 - 简书 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小懒懒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值