樹---B樹、B+樹、B*樹

B樹

B樹(也稱B-tree,B-樹)特點:

  • B樹的階:節點的最多子節點個數
  • B-樹的搜索,從根結點開始,對結點內的關鍵字(有序)序列進行二分查找,如果命中則結束,否則進入查詢關鍵字所屬範圍的子結點;重複,直到所對應的子指針爲空,或已經是葉子結點
  • 關鍵字集合分佈在整顆樹中, 即葉子節點和非葉子節點都存放數據
  • 搜索有可能在非葉子結點結束
  • 其搜索性能等價於在關鍵字全集內做一次二分查找
    在這裏插入圖片描述

B+樹

B+樹是B樹的變體,也是一種多路搜索樹。特點:

  • B+樹的搜索與B樹也基本相同,區別是B+樹只有達到葉子結點才命中(B樹可以在非葉子結點命中),其性能也等價於在關鍵字全集做一次二分查找
  • 所有關鍵字都出現在葉子結點的鏈表中(即數據只能在葉子節點【也叫稠密索引】),且鏈表中的關鍵字(數據)恰好是有序的
  • 不可能在非葉子結點命中
  • 非葉子結點相當於是葉子結點的索引(稀疏索引),葉子結點相當於是存儲(關鍵字)數據的數據層
  • 更適合文件索引系統
  • B樹和B+樹各有自己的應用場景,不能說B+樹完全比B樹好,反之亦然
    在這裏插入圖片描述

B*樹

B*樹是B+樹的變體,在B+樹的非根和非葉子結點再增加指向兄弟的指針。特點:

  • B*樹定義了非葉子結點關鍵字個數至少爲(2/3)*M,即塊的最低使用率爲2/3,而B+樹的塊的最低使用率爲B+樹的1/2
  • 從第1個特點我們可以看出,B*樹分配新結點的概率比B+樹要低,空間使用率更高
    在這裏插入圖片描述

文件系統及數據庫系統的設計者利用了磁盤預讀原理,將一個節點的大小設爲等於一個頁(頁得大小通常爲4k),這樣每個節點只需要一次I/O就可以完全載入。將樹的度M設置爲1024,在600億個元素中最多隻需要4次I/O操作就可以讀取到想要的元素, B樹(B+)廣泛應用於文件存儲系統以及數據庫系統中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章