面试题:B树与B+树的区别,为什么Innodb要用B+树而不是B树

B树与B+树是两种常用的数据库索引结构。B树所有节点都存储数据,而B+树仅在叶子节点存储数据,非叶子节点仅作索引。由于B+树的非叶子节点不存储数据,能存储更多索引,导致其通常比B树更矮,磁盘IO次数更少,搜索效率更高。因此,Innodb存储引擎选择使用B+树作为其索引实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试题:B树与B+树的区别,为什么Innodb要用B+树而不是B树

B树

B树是一种平衡的多路查找树,它的所有叶子节点都在同一层。

在这里插入图片描述

B树是由平衡二叉树演化而来,B树的每个节点可以存储多个关键字,每个节点都带有完整的数据。

B树将节点大小设为磁盘页的大小,每次读取磁盘页时就能读取到一整个节点,减少了磁盘IO次数。由于B树的每个节点都存储着多个关键字,树的深度会远小于一般的平衡二叉树,进而减少了磁盘IO次数。B树在进行搜索关键字操作时,先将指定的那一个节点从磁盘读取到内存中(这个节点包含了多个关键字和数据),再在内存中查找这一个节点里的对应关键字。

B+树

B+树在B树的基础之上做了改进,B树只在叶子节点上存放数据,其他节点只有索引作用(只存储索引键值)。

在这里插入图片描述

由于在数据库中页的大小是固定的,InnoDB存储引擎中页的大小默认为16KB,如果非叶子节点不存数据,那么这些非叶子节点就可以存储更多的索引键值。在同等数据量下,B+树会比B树更矮、更胖。B+树在B树的基础上进一步压缩了树的高度,减少了磁盘IO次数,提高了索引查找效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值