B樹查詢,磁碟查詢資料

鴨脖發表於2012-04-21

【B~樹】 

B~樹,又叫平衡多路查詢樹。一棵m階的B~樹 (m叉樹)的特性如下:

1)  樹中每個結點至多有m個孩子;

2)  除根結點和葉子結點外,其它每個結點至少有[m/2]個孩子;

3)  若根結點不是葉子結點,則至少有2個孩子;

4)  所有葉子結點都出現在同一層,葉子結點不包含任何關鍵字資訊(可以看做是外部接點或查詢失敗的接點,實際上這些結點不存在,指向這些結點的指標都為null);

5)  每個非終端結點中包含有n個關鍵字資訊: (n,A0,K1,A1,K2,A2,......,Kn,An)。其中,

     a)   Ki (i=1...n)為關鍵字,且關鍵字按順序排序Ki < K(i-1)。

     b)   Ai為指向子樹根的接點,且指標A(i-1)指向子樹種所有結點的關鍵字均小於Ki,但都大於K(i-1)。

     c)   關鍵字的個數n必須滿足:  [m/2]-1 <= n <= m-1

 現在我們模擬查詢檔案29的過程:

      (1) 根據根結點指標找到檔案目錄的根磁碟塊1,將其中的資訊匯入記憶體。【磁碟IO操作1次】

      (2) 此時記憶體中有兩個檔名17,35和三個儲存其他磁碟頁面地址的資料。根據演算法我們發現17<29<35,因此我們找到指標p2。

      (3) 根據p2指標,我們定位到磁碟塊3,並將其中的資訊匯入記憶體。【磁碟IO操作2次】

      (4) 此時記憶體中有兩個檔名26,30和三個儲存其他磁碟頁面地址的資料。根據演算法我們發現26<29<30,因此我們找到指標p2。

      (5) 根據p2指標,我們定位到磁碟塊8,並將其中的資訊匯入記憶體。【磁碟IO操作3次】

      (6) 此時記憶體中有兩個檔名28,29。根據演算法我們查詢到檔案29,並定位了該檔案記憶體的磁碟地址。

相關文章