[TOC]html
參考: B樹、B+樹詳解
B+ 樹是一種存儲結構,經常使用在數據庫創建索引。數據庫
準備知識數組
m階的樹:樹最大分叉有m個,即子節點數最大爲m個;工具
根節點:沒有父節點的節點;spa
葉節點:沒有子節點的節點;指針
內部節點:不是根、葉節點的節點;htm
二叉搜索樹:左子樹中的值要比根節點值 小,右子樹中的值要比根節點值 大;blog
平衡二叉樹:二叉搜索樹的特殊狀況,左右子樹高度同樣;索引
B數是平衡多叉樹,一個m階的B樹,有以下特性:內存
B+樹是B樹變體,對其規則作了些改變。改變以下:
非葉子節點由一個有序數組組成,可是數組元素由一個索引值一個指針組成;
只須要查找最左邊範圍便可,查到後遍歷往右遍歷葉子結點,知道碰到右邊範圍結束,這樣就篩出了全部範圍內數據。
B樹的範圍查找用的是中序遍歷,而B+樹用的是在鏈表上遍歷;
B+樹的內部結點並無指向關鍵字具體信息的指針。所以其內部結點相對B 樹更小。若是把全部同一內部結點的關鍵字存放在同一盤塊中,那麼盤塊所能容納的關鍵字數量也越多。一次性讀入內存中的須要查找的關鍵字也就越多。相對來講IO讀寫次數也就下降了;
因爲非終結點並非最終指向文件內容的結點,而只是葉子結點中關鍵字的索引。因此任何關鍵字的查找必須走一條從根結點到葉子結點的路。全部關鍵字查詢的路徑長度相同,致使每個數據的查詢效率至關;