111年關務三等資料庫應用

二、假設在關聯式資料庫系統中,資料庫管理者 (DBA) 定義了一個 MEMBER表格,其中包含三個字串型態的屬性:MidNameTelephone,並根據 Mid欄位定義一個名為 “MyIndex” B+-tree 索引 (Index)。首先請說明“MyIndex” 索引的樹狀結構,包含其內部節點、葉節點、結構的特性等,答案請以文字敘述或圖形呈現。其次請說明資料庫系統如何利用該索引結構,提升下列 SQL 查詢句的處理效能:

    select Name from MEMBER where Mid = ‘M001’20分)

答:

MEMBER資料表:

Mid

Name

Telphone

M001

王一

0918-111111

M002

張二

0918-222222

M003

陳三

0918-333333

M004

李四

0918-444444

M005

周五

0918-555555

()樹狀結構

1.定義:

  利用 B-Tree 的結構改良,將資料儲存於終端節點,最上階層的節點只包含鍵值和指向其他節點的指標。也就是說只有葉節點的索引記錄才含有資料指標,其餘的節點中僅含有單純的索引值。

2.節點結構:

  pic01.png

  B+ 樹的內部節點,它有 q-1 個搜尋值;B+ 樹的葉端節點,它有 q-1 個搜尋值和 q-1 個資料指標。

3.內部節點(internal node)

  (1)每個內部節點的形式如下:

    <P1, K1, P2, K2, …, Pq-1, Kq-1, Pq>

    其中 q ≤ p Pi 是樹指標 (tree pointer)

  (2)在每個內部節點中,Kl < K2 < … < Kq-1

  (3)對於 Pi 所指的子樹中所有的搜尋鍵值欄位值 X,以下條件會成立:

    1 < i < q時,Ki-1 < X < Ki,當 i = 1 時,X < Ki i = q 時,Ki-1 < X

  (4)每個內部節點最多有 p 個樹指標。

  (5)除了根節點之外的每個內部節點,至少有  個樹指標。假如它是個內部節點,則它至少有兩個樹指標。

  (6)內部節點有 q 個指標和 q-1 個搜尋欄位值,其中 q ≤ p

4.葉節點(leaf node):葉端節點

  (1)每個葉節點的形式如下:

    <<K1, Pr1>, <K2, Pr2>, … , <Kq-1, Prq-1>, Pnext>

    其中 q ≤ p 且每個 Pri 是個資料指標,Pnext 指向 B+ 樹的下一個樹葉節點。

  (2)在每個葉節點中,Kl < K2 < … < Kq-1,其中 q ≤ p

  (3)每個 Pri 是一個資料指標 (data pointer),它指向搜尋欄位值為 Ki 的記錄,或者是包含該記錄的檔案區塊 (若搜尋欄位不是鍵值,則 Pri 指向一個包含數個指標的區塊,區塊中的指標指向搜尋欄位值為 Ki 的記錄)

  (4)每個葉節點至少有 pic02.png個值。

  (5)所有葉節點的層級相同。

()資料庫系統如何利用該索引結構,提升SQL查詢句的處理效能

 

pic03.png

1.假設透過某個函式可以取出末三碼的整數,例如 M001 透過某個函式可以取出1M002 透過某個函式可以取出2M128 透過某個函式可以取出128。並且將取出末三碼的整數產生一棵 B+ 樹。

2.當搜尋 M001 時,從樹根3往下搜尋,只需要比較2次。可以得知 M001 儲放在 p3 區塊中的第1筆紀錄;當搜尋 M005 時,從樹根3往下搜尋,只需要比較2次。可以得知 M005 儲放在 p7 區塊中的第1筆紀錄。如果搜尋 M005 時不是使用 B+ 樹索引結構,那麼必須逐筆搜尋,也就是要搜尋5次才能找到資料,因此使用此索引結構可以加快搜尋資料的速度。

參考資料:

1.https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html

2.黃三益-資料庫的核心理論與實務第五版 p.287~p.288

arrow
arrow
    文章標籤
    111年關務三等 資料庫應用
    全站熱搜

    jacksaleok 發表在 痞客邦 留言(0) 人氣()