柠檬少年|腾讯面试官用「B+树」虐哭我了( 三 )


柠檬少年|腾讯面试官用「B+树」虐哭我了插入元素6
如果我们插入的元素是10?按道理我们应该插入到9后面 , 但是节点已经满了 , 所以我们需要采取其他的方式 。 方法是将此叶子节点进行分裂 , 即生成一个新的节点 , 然后将数据在两个节点中平分 。
柠檬少年|腾讯面试官用「B+树」虐哭我了节点分裂
很明显 , 叶子节点的分裂影响到了父节点 , 如果父节点也是满的 , 也要进行分裂
柠檬少年|腾讯面试官用「B+树」虐哭我了节点分裂
总结
【柠檬少年|腾讯面试官用「B+树」虐哭我了】从大问题拆分为小问题并逐个解决是我们在生活学习重要的本领 , 比较复杂的B+树其实也就是基本的数据结构(数组 , 链表 , 树)组成 , 其检索过程实际上就是二分查找 , 所以如果B+树完全载入内存 , 它的检索效率和有序数组/二叉检索树差不多 , 但是却更加复杂 。 B+树最大的优点在于它将索引存放在磁盘 , 让检索技术摆脱了内存限制 , 另外通过将索引和数据分离的方式 , 将索引的数组大小保持在较小范围 , 这样精简索引 。


推荐阅读