暂无图片
MySQL数据库为什么 B+ 树比 B 树更适合应用于数据库索引?
我来答
分享
shunwahⓂ️
2023-01-02
MySQL数据库为什么 B+ 树比 B 树更适合应用于数据库索引?

MySQL数据库为什么 B+ 树比 B 树更适合应用于数据库索引?

我来答
添加附件
收藏
分享
问题补充
6条回答
默认
最新

B树允许在根节点、内部节点和叶节点当中的任意层上储存值;而B+树则仅在叶节点中存储值,其内部节点仅存储分隔键,用于指引搜索算法去找到叶节点上的关联值。

由于B+树中的值仅存储在叶节点这一层上,所以所有操作(插入、更新、删除和检索数据记录)仅影响叶节点,并且这些操作仅在分裂和合并期间才会传播到更高层。

B+树广为人知,因此有些文献将之称为B树。例如,MySQL InnoDB将其B+树的实现称为B树。

暂无图片 评论
暂无图片 有用 2
暂无图片
yBmZlQzJ

MySQL数据库为什么 B+ 树比 B 树更适合应用于数据库索引?

暂无图片 评论
暂无图片 有用 0
农夫三拳
暂无图片 评论
暂无图片 有用 0
szrsu
暂无图片

B+树更适合外部存储。由于内结点不存放真正的数据(只是存放其子树的最大或最小的关键字,作为索引),一个结点可以存储更多的关键字,每个结点能索引的范围更大更精确,也意味着B+树单次磁盘IO的信息量大于B树,I/O的次数相对减少。

MySQL是一种关系型数据库,区间访问是常见的一种情况,B+树叶结点增加的链指针,加强了区间访问性,可使用在区间查询的场景;而使用B树则无法进行区间查找。

暂无图片 评论
暂无图片 有用 2
鸿惊九天
2023-01-02
是的,B+树叶结点增加的链指针,加强了区间访问性
伊伊相印
2023-01-02
是的,B+树叶结点增加的链指针,加强了区间访问性
张sir

mysql的B+树一方面树的节点只存储索引键值,不存数据,同样深度的树比B树存的数据更多。另一方面B+树的叶子节点之间使用双向链表,在范围扫描时更有优势。

暂无图片 评论
暂无图片 有用 2
游湖

B+树更适合外部存储。由于内结点不存放真正的数据(只是存放其子树的最大或最小的关键字,作为索引),一个结点可以存储更多的关键字,每个结点能索引的范围更大更精确,也意味着B+树单次磁盘IO的信息量大于B树,I/O的次数相对减少。

暂无图片 评论
暂无图片 有用 7
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏