B+树是针对数据库特点,对B树进行的改造。
B树构建:https://www.cnblogs.com/RambleIvy/p/12925459.html
相对B树,B+树的改动在于
1.非叶结点中的每一个key为子结点中最大的key值,因此非叶结点中的Pi数量与Ki数量相等。
2.所有的信息都存储在叶结点中,每次访问都需要访问到叶结点才能得到数据在磁盘上的存储位置
3.所有叶结点按序链接在一起
B+树这样设计的理由是,数据库中的数据往往不是一次性可以载入到内存中的,因此常需分页查找(OS里对分页查找的运用非常广泛)。B+树将非叶结点全部作为索引节点,每一个索引节点只保存Ki Pi,而不保存Ki数据的磁盘地址,使得每次分页查询可以载入更多的结点到内存,减少I/O次数,从而提升效率。
因此,B树在纯内存的环境下查找效率其实是高于B+树的。
计算机的研究之趣,不限于代码一隅