概念
B+樹是B樹的擴展吧秕,是常用的數(shù)據(jù)庫索引結構。
基本結構對比
在B樹中迹炼,有如下特征:
- 所有節(jié)點都存放索引和數(shù)值(Key+Value)
- 葉子節(jié)點具有相同深度砸彬,葉節(jié)點的指針為空颠毙。
- 所有索引元素不重復。
而B+樹中砂碉,有如下不同:
- 非葉子節(jié)點只存儲索引(Key),葉子節(jié)點存放所有索引和數(shù)值(Key+Value)蛀蜜。
- 葉子節(jié)點具有相同深度,并且葉子節(jié)點之間按照順序通過指針連接增蹭。
- 部分索引會出現(xiàn)重復滴某,有冗余。
B+樹的優(yōu)勢
- 內部節(jié)點只存放索引滋迈,索引所占空間小壮池,所以單個節(jié)點在相同存儲空間下,比B樹可以存放更多的索引(Key)杀怠。進而索引節(jié)點的子節(jié)點指針會更多(指向子節(jié)點出度會更大)椰憋,或者說樹結構會更寬,進而可以使樹的深度更小赔退。由于樹的深度直接影響性能(時間復雜度和IO性能)橙依,所以B+樹性能會更高。
- 葉子節(jié)點按順序通過指針連接硕旗,當需要進行數(shù)據(jù)依次訪問時窗骑,能極大提高效率。
- 維持樹的平衡成本更低漆枚,因為數(shù)據(jù)都存在葉子節(jié)點上创译,所以都是從葉子節(jié)點進行更新/刪除,比B樹操作簡單墙基。
- 其他方面软族,更好利用外存存儲(在其他筆記里面展開)