1. 程式人生 > >B樹,B+樹比較

B樹,B+樹比較

首先注意:B樹就是B-樹,"-"是個連字元號,不是減號。也就是B-樹其實就是B樹

B-樹是一種平衡的多路查詢(又稱排序)樹,在檔案系統中有所應用。主要用作檔案的索引。其中的B就表示平衡(Balance) 

 

B+樹是對B樹的一種升級, B樹每個節點都儲存data, 而B+樹只在葉子節點儲存data,B+降低了樹的深度,將“瘦高”的樹變得“矮胖:

實現方法: 

(1)、每個節點儲存多個元素 
(2)、摒棄二叉樹結構,採用多叉樹

 

B樹:

 

B+樹:

 

 

B+樹有更高的查詢效率 

1. B+樹中間節點沒有衛星資料,只有索引,而B樹每個結點中的每個關鍵字都有衛星資料;這就意味著同樣的大小的磁碟頁可以容納更多節點元素,在相同的資料量下,B+樹更加“矮胖”,IO操作更少 

2、其次,因為衛星資料的不同,導致查詢過程也不同;B樹的查詢只需找到匹配元素即可,最好情況下查詢到根節點,最壞情況下查詢到葉子結點,所說效能很不穩定,而B+樹每次必須查詢到葉子結點,效能穩定
3、在範圍查詢方面,B+樹的優勢更加明顯
  B樹的範圍查詢需要不斷依賴中序遍歷。首先二分查詢到範圍下限,在不斷通過中序遍歷,知道查詢到範圍的上限即可。整個過程比較耗時。
  而B+樹的範圍查詢則簡單了許多。首先通過二分查詢,找到範圍下限,然後同過葉子結點的連結串列順序遍歷,直至找到上限即可,整個過程簡單許多,效率也比較高。

 

小結:

B+樹相比B樹的優勢: 
  1.單一節點儲存更多的元素,使得查詢的IO次數更少; 
  2.所有查詢都要查詢到葉子節點,查詢效能穩定; 
  3.所有葉子節點形成有序連結串列,便於範圍查詢。