mysql底層數據結構之--BTree結構及相關數據結構瞭解

BTree特性

BTree又叫多路平衡查找樹,一顆m叉的BTree特性如下:

  • 樹中每個節點最多包含m個孩子。
  • 除根節點與葉子節點外,每個節點至少有[ceil(m/2)]個孩子。
  • 若根節點不是葉子節點,則至少有兩個孩子。
  • 所有的葉子節點都在同一層。
  • 每個非葉子節點由n個key與n+1個指針組成,其中[ceil(m/2)-1] <= n <= m-1 。

 

 

BTree插入

以5叉BTree爲例,key的數量:公式推導[ceil(m/2)-1] <= n <= m-1。所以 2 <= n <=4。當n>4時,中間節點分裂到父節點,兩邊節點分裂。

1、以插入C N G A H E K Q M F W L T Z D P R X Y S爲例,前4個字母沒什麼好說的。

2、插入H,n>4,中間元素G字母向上分裂到新的節點。

3、插入E,K,Q不需要分裂。

4、插入M,中間元素M字母向上分裂到父節點G。

 

5、插入F,W,L,T不需要分裂。

6、插入Z,中間元素T向上分裂到父節點中。

 

7、插入D,中間元素D向上分裂到父節點中。然後插入P,R,X,Y不需要分裂。

 

8、最後插入S,NPQR節點n>5,中間節點Q向上分裂,但分裂後父節點DGMT的n>5,中間節點M向上分裂。需要注意的是,原BTree第三個子節點HKL會包含DG節點中。

 

到此,一個BTree的構建就完成了,怎麼樣?是不是很簡單。刪除操作比插入略微複雜,鑑於篇幅,不做敘述。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章