美文网首页mysql锁与索引专题
(二)b+tree索引的创建原理

(二)b+tree索引的创建原理

作者: b12af9baadf4 | 来源:发表于2016-12-28 19:52 被阅读641次

    很多人对b+tree数据结构的创建过程不是很清楚,接下来我们先通过一个简单的实例来了解一下。

    将1,3,4,6,7,10,12,14,15插入以下每个节点下子节点最多为3个的B+tree中:是如何进行的呢?

    首先,系统会创建一个空间大小限定的节点(注意系统分配的节点大小都是均匀相等的),并插入1效果如下:

    插入3,由于3大于1,因此3被放置在1的右侧,此时该节点的空间正好可以放下两个数据,如下:

    插入4,由于4最大,按道理应该存放在3的右侧,但是由于3个数据占用空间超过一个节点的空间,因此,将该根节点分裂出左右两个子节点,并且将中间值3向上提取到父节点,如下:

    插入6,由于6最大,按道理应该存放在4的右侧,但是由于3个数据占用空间超过一个节点的空间,因此,将该节点分裂出左右两个子节点,并且将中间值4向上提取到父节点,如下:

    插入7,由于7最大,按道理应该存放在6的右侧,但是由于3个数据占用空间超过一个节点的空间,因此,将该节点分裂出左右两个子节点,并且将中间值6向上提取到父节点如下:

    插入10,由于10最大,按道理应该存放在7的右侧,但是由于3个数据占用空间超过一个节点的空间,因此,将该节点分裂出左右两个子节点,并且将中间值6向上提取到父节点如下:

    插入12,(同上)如下:

    插入14,(同上)如下:

    插入15,一个节点最多有3个子节点,那么此时15的插入会导致最底层分裂,提取14作为父节点,由于中间层最右侧的节点中已经有10和12两个数据,此时14的插入又会导致分裂,提取12向上作为父节点,而最顶层一个节点有4和7,那么13的插入又会导致中间值7被提取作为父节点,如下:

    如上,便是简单的b+tree数据结构的创建流程模型,了解了这些,后面我们就可以更好的分析b+tree索引了。

    相关文章

      网友评论

        本文标题:(二)b+tree索引的创建原理

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