1. 程式人生 > >B+樹優缺點

B+樹優缺點

優點

  1. 單次請求涉及的磁碟IO次數少(出度d大,且非葉子節點不包含表資料,樹的高度小);
  2. 查詢效率穩定(任何關鍵字的查詢必須走從根結點到葉子結點,查詢路徑長度相同);
  3. 遍歷效率高(從符合條件的某個葉子節點開始遍歷即可);

在B+樹中, 由於底層的各個葉子節點都通過指標組織成一個雙向連結串列, 結構如下圖所示。 因此,只需要從跟節點到葉子節點定位到第一個滿足條件的Key, 然後不斷在葉子節點迭代next指標即可實現遍歷,此時相當於順序IO。相反,如果通過每次從根節點查詢進行遍歷,相當於進行隨機IO,效率低下,如下圖所示:

      這裡寫圖片描述

      這裡寫圖片描述

缺點

B+樹最大的效能問題在於會產生大量的隨機IO,主要存在以下兩種情況:

  1. 主鍵不是有序遞增的,導致每次插入資料產生大量的資料遷移和空間碎片;
  2. 即使主鍵是有序遞增的,大量寫請求的分佈仍是隨機的;

參考: