1. 程式人生 > >B樹(或B-樹)和B+樹和B*樹(不看後悔,一看必懂)

B樹(或B-樹)和B+樹和B*樹(不看後悔,一看必懂)

樹的深度過大而造成磁碟I/O讀寫過於頻繁,進而導致查詢效率低下

根據平衡二叉樹的啟發,自然就想到平衡多路查詢樹結構,即B樹結構(後面,我們將看到,B樹的各種操作能使B樹保持較低的高度,從而達到有效避免磁碟過於頻繁的查詢存取操作,從而有效提高查詢效率)。

為什麼說B+tree比B 樹更適合實際應用中作業系統的檔案索引和資料庫索引?

1) B+tree的磁碟讀寫代價更低

B+tree的內部結點並沒有指向關鍵字具體資訊的指標。因此其內部結點相對B 樹更小。如果把所有同一內部結點的關鍵字存放在同一盤塊中,那麼盤塊所能容納的關鍵字數量也越多。一次性讀入記憶體中的需要查詢的關鍵字也就越多。相對來說IO讀寫次數也就降低了。

2) B+tree的查詢效率更加穩定

由於非終結點並不是最終指向檔案內容的結點,而只是葉子結點中關鍵字的索引。所以任何關鍵字的查詢必須走一條從根結點到葉子結點的路。所有關鍵字查詢的路徑長度相同,導致每一個數據的查詢效率相當。

B*樹分配新結點的概率比B+樹要低,空間使用率更高;