1. 程式人生 > 其它 >B樹、B+樹

B樹、B+樹

B樹

B樹,也就是多路平衡搜尋樹,它類似普通的平衡二叉樹,不同的是B樹允許每個節點有更多的子節點,如下圖:

B樹有以下特性:

  • 所有的鍵值分佈在整棵樹中(索引值和具體的data都在每個節點裡)。
  • 任何一個關鍵字出現且只出現在一個結點中。
  • 搜尋有可能在任意一個非葉子結點結束(最好的情況就是O(1))。
  • 在關鍵字全集內做一次性查詢,效能逼近二分查詢。

B樹是專門為外部儲存器設計的,如磁碟,它對於讀取和寫入大塊資料有良好的效能,所以一般被用在檔案系統及資料庫中。

B+樹

B+樹是B樹的變種,也是一種多路搜尋樹,它和B樹的不同之處在於:

  • 所有關鍵字儲存在葉子結點處,內部非葉子結點不儲存data。
  • 為所有葉子增加了一個鏈指標

簡化B+樹如下圖:

B+樹的優點

  • 由於B+樹的葉子結點資料都是使用連結串列連線起來的,而且他們在磁盤裡都是順序儲存的,磁碟的預讀原理就會提前把這些資料讀進記憶體,使得範圍查詢和排序更快。
  • B+樹只有葉子結點存data,非葉子結點只有索引值,也就是說在B+樹的一次IO裡,能讀取的索引更多,從而減少查詢時需要的IO次數。