B樹,B+樹比較
阿新 • • 發佈:2018-12-04
首先注意: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.所有葉子節點形成有序連結串列,便於範圍查詢。