B+树tips

作者: Jiafu | 来源:发表于2020-01-27 11:14 被阅读0次
B+树定义

一个m阶B+树定义:

  1. 每一个节点最多有 m 个子节点
  2. 每一个非叶子节点(除根节点)最少有 ⌈m/2⌉ 个子节点
  3. 如果根节点不是叶子节点,那么它至少有两个子节点
  4. 有 k 个子节点的非叶子节点拥有 k − 1 个键
  5. 所有的叶子节点都在同一层
  6. 内部节点只有key,没有value。
  7. 所有key都出现在叶子节点。
  8. 所有叶子节点用链表链接起来。
B+树和B-树的区别

1~5实际上是B-tree的定义,而B+ tree相当于是B-tree的变种,具体的变化就体现在6~8这几条。所以B+tree相对于B-tree有哪些好处呢?由于内部节点只有key,没有value,所以同样大小的节点可以放下更多的key,因此树的高度更低了,查找也会更快。所有叶子节点用链表链接后,遍历效率高很多。

搜索

k表示待搜索的key,d表示key的个数,下面的伪码表示了搜索过程,并且假设key值是不重复的,且key值一定存在。

function search(k) is
    return tree_search(k, root)
 
function: tree_search(k, node) is
    if node is a leaf then
        return node
    switch k do
    case k ≤ k_0
        return tree_search(k, p_0)
    case k_i < k ≤ k_{i+1}
        return tree_search(k, p_{i+1})
    case k_d < k
        return tree_search(k, p_{d})

伪码来自wiki B+tree

B+树的插入删除

B+树的插入伴随着节点的新建和拆分,是一个自底向上的过程,以后有用到再补充吧。

B+树的应用

用于存储索引数据。

相关文章

  • B+树tips

    B+树定义 一个m阶B+树定义: 每一个节点最多有 m 个子节点 每一个非叶子节点(除根节点)最少有 ⌈m/2⌉ ...

  • B+树

    B+树概况 InnoDB使用了B+树索引模型 每个索引在InnoDB里面对应一棵B+树 B+树特点 m阶B+树每个...

  • 聊一聊B+树

    标签: 图解B+树 | B+树代码|mysql 聚集索引|mysql B+树索引| 前言   虽然B+是B-演化过...

  • mysql 浅析

    索引的结构 B+树 二叉查找树、平衡二叉树 、B树、 B+树 B树: B+树: B+树中各个页之间是通过双向链表连...

  • MySQL B+树介绍

    MySQL B+树介绍 B+树的演变 二叉树 --> 二叉查找树 --> 平衡二叉树 --> B树 --> B+树...

  • B树、B+树、B*树

    1)什么是B树、B+树、B树?2)B树、B+树、B树的作用?3)B树、B+树、B*树的应用场景? 一、什么是B树、...

  • 底层数据结构(B+树 - 查找、插入和删除)

    B+树是什么? B+树是一种树; B+树(或者其子树)代表一个有序的键值对集合,通过键决定键值对顺序; B+树的节...

  • BoltDB(二)page 结构

    B+ 树模型 要明白 B+ 树模型,可以参考:MySQL 数据库索引 -- B+树模型[https://www.j...

  • MySQL:索引

    索引的底层实现 InnoDB存储引擎数据结构使用B+树 B+树 B+数据的基本结构如下图 为什么选用B+树 MyS...

  • MYSQL的索引与B+Tree

    MySQL 索引与 B+ 树 B+ 树 MySQL Innodb 存储引擎是使用 B+ 树来组织索引的。在介绍 B...

网友评论

    本文标题:B+树tips

    本文链接:https://www.haomeiwen.com/subject/phasthtx.html