B樹(B-tree)數據庫
概念: B樹又稱多叉平衡查找樹,B指的是Balance。 B樹中全部結點的子結點數的最大值稱爲B數的階,一般用m表示。 定義: 一棵非空的m階B樹知足如下條件: 1)樹中每一個結點最多有m棵子樹。 2)若根結點不是葉子結點,則至少有兩棵子樹。 3)全部分支結點至少有m/2棵子樹。 4)有n棵子樹的非葉子結點剛好有n-1個關鍵字,關鍵字按遞增次序排列。 5)全部的葉子結點都出如今同一層上,而且不帶信息(注:實際上,這些葉子結點並不存在,即:指向葉子結點的指針爲空!) 特色: 1)B樹是全部結點的平衡因子均等於0的多路查找樹。
B+樹指針
概念:B+樹是應文件系統和數據庫所需而出的一種B樹的變型 結構: 根節點: 包含key和next,next指向索引裏其餘的分支節點或者是葉子節點。 分支節點:包含key和next,next指向索引裏其餘的分支節點或者是葉子節點。 葉子節點:包含key和value,value直接指向表裏的數據。 定義: 1)樹中每一個結點最多有m棵子樹。 2)若根結點不是葉子結點,則至少有兩棵子樹。 3)全部分支結點至少有m/2棵子樹。 4)有n棵子樹的結點剛好有n個關鍵字。 5)全部的分支結點僅包含了它各個子節點中最大的那個關鍵字 及 指向其子節點的指針,並無包含該關鍵字對應記錄的存儲地址。 6)全部的葉子結點中包含了所有關鍵字的信息 及 指向含這些關鍵字記錄的指針,且葉子結點自己依關鍵字的大小自小而大順序連接。 說明:B+樹中分支結點中出現的關鍵字也會出如今葉子節點中,而B樹中分子節點和葉子節點包含的關鍵字是不重複的。 說明: 1)在數據庫中,B+樹的高度通常在2到3層。也就是說查找某一鍵值的記錄,最多隻須要2到3次IO開銷。按磁盤每秒100次IO來計算,查詢時間只需0.02到0.03秒。 2)B+樹索引並不能找到一個鍵值對應的具體行。b+樹索引只能查到被查找數據行所在的頁,而後數據庫經過把頁讀入內存,再在內存中查找,最後獲得結果。 B樹和B+樹的比較: 1)B樹由於其分支結點一樣存儲着數據,咱們要找到具體的數據,須要進行一次中序遍歷按序來掃,因此B樹經常使用於文件索引。 2)B+樹的數據都存儲在葉子結點中,分支結點均爲索引,方便掃庫,只須要掃一遍葉子結點便可,因此B+樹更加適合在區間查詢的狀況,因此B+樹經常使用於數據庫索引。