B+树及B数的区别

B树中的同一键值不会出现多次,它有可能出现在叶子节点上,也有可能出现在内节点
上;而B+树的键一定会出现在叶子节点上,同时也有可能在非叶子节点中重复出现。简
单来说,B+树的内节点存储的都是键值,键值对应的具体数据都存储在叶子节点上。
•由于B树的毎一个节点都存储了真实的数据,会导致毎一个节点存储的数据量变小,所 以整个B树的层数就会相对变高,当数据量变大之后,维护代价是比较大的,而且层数 越高,搜索或修改的性能就会越低;而在B+树的内节点中,只存储键值,相对而言,一
个内节点存储的记录个数比B树多很多。由于B+树是横向扩展的,所以随着其中数据
高个子。这样整体而言,B+树在搜索时,从上到下直到叶子节点只需要遍历层数个节点
而已,因此性能会比较高。
• B树的查询效率与键在B树中的位置有关,(在叶子节点的时候)最大时间复杂度与B+ 树相同,最小时间复杂度为1 (在根节点的时候);而B+树的复杂度对某个建成的树是 固定的。
・B树中,键的位置不固定,且在整个树结构中只出现一次,虽然可以节省存储空间,但 却使得插入、删除等操作复杂度明显增加。而且性能不平衡,有可能会很快找到合适的 位置,也有可能需要做比较多的I。操作才能找到。而B+树相对来说是一种较好的折 中,因为内节点相对叶子节点而言,相当于是一个索引,在插入的过程中,只需要通过 在每一层搜索一个节点,依次找到叶子节点之后,在叶子节点处做插入操作即可,只是 在遇到一个节点存储满了的情况下会进行B+树分裂,但总体而言性能还是比较稳定。
・B树中,所有的数据都只存储一份;而B+树中,除了存储了所有数据的叶子节点外,还 有只存储键值数据的内节点,所以,在占用空间量方面,B+树比B树会多占用一些空 间,这部分空间就是B+树内节点的所有空间,但B+树通过这种方式提高「整体性能, 更适合于性能要求很高的文件检索。