十四、Mysql之B-Tree

Hro發表於2018-12-11

一、何為B-Tree?
  B-Tree就是我們常說的B樹,沒有B減樹,它是一種多路搜尋樹(並不是二叉的);
  B樹的特徵:
    1、根結點至少有兩個子女。
    2、每個中間節點都包含k-1個元素和k個孩子,其中 ceil(m/2) ≤ k ≤ m
    3、每一個葉子節點都包含k-1個元素,其中 ceil(m/2) ≤ k ≤ m
    4、所有的葉子結點都位於同一層。
    5、每個節點中的元素升序排序,節點當中k-1個元素正好是k個孩子包含的元素的值域劃分
    6、每個結點的結構為:(n,A0,K1,A1,K2,A2,… ,Kn,An)
    其中,Ki(1≤i≤n)為關鍵字,且Ki<Ki+1(1≤i≤n-1)。 Ai(0≤i≤n)為指向子樹根結點的指標。且Ai所指子樹所有結點中的關鍵字均小於Ki+1。 n為結點中關鍵字的個數,滿足ceil(m/2)-1≤n≤m-1。
    7、非葉子結點的關鍵字個數=指向兒子的指標個數-1
  簡訴:
  B-tree中,每個結點包含:
  1、結點所含關鍵字的個數;
  2、指向父結點的指標;
  3、關鍵字(下圖中的數字);
  4、指向子結點的指標(下圖中含p的);
如圖:

十四、Mysql之B-Tree
圖中:數字表示關鍵字,p表示指標,data表示除關鍵字外的資訊

B樹的搜尋:從根結點開始,對結點內的關鍵字(有序)序列進行二分查詢,如果命中則結束,否則進入查詢關鍵字所屬範圍的兒子結點;重複,直到所對應的兒子指標為空,或已經是葉子結點;即B樹的查詢過程是一個順指標查詢結點和在結點的關鍵字中進行查詢的交叉進行的過程。

相關文章