資料庫 B樹 B+樹,資料庫b樹

來源:互聯網
上載者:User

資料庫 B樹 B+樹,資料庫b樹

在資料庫的索引中,一般是利用B樹或者B+樹進行檢索和查詢

介紹一下在兩種資料結構中資料的查詢方式:


1)B樹

  B樹中每個節點包含了鍵值和鍵值對於的資料對象存放地址指標,所以成功搜尋一個對象可以不用到達樹的分葉節點

  成功搜尋包括節點內搜尋和沿某一路徑的搜尋,成功搜尋時間取決於關鍵碼所在的層次以及節點內關鍵碼的數量。

  在B樹中尋找給定關鍵字的方法是:首先把根結點取來,在根結點所包含的關鍵字K1,…,kj尋找給定的關鍵字(可用順序尋找或二分尋找法),若找到等於給定值的關鍵字,則尋找成功;否則,一定可以確定要查的關鍵字在某個Ki或Ki+1之間,於是取Pi所指的下一層索引節點塊繼續尋找,直到找到,或指標Pi為空白時尋找失敗。

  

2)B+樹

  B+樹非分葉節點中存放的關鍵碼並不指示資料對象的地址指標,非葉子節點只是索引部分。所有的分葉節點在同一層上,包含了全部關鍵碼和相應資料對象的存放地址指標,且分葉節點按關鍵碼從小到大順序連結。如果實際資料對象按加入的順序儲存而不是按關鍵碼次數儲存的話,分葉節點的索引必須是稠密索引,若實際資料存放區按關鍵碼次序存放的話,分葉節點索引時稀疏索引。

  B+樹有2個頭指標,一個是樹的根節點,一個是最小關鍵碼的分葉節點。

  所以 B+樹有兩種搜尋方法:

  一種是按分葉節點自己拉起的鏈表順序搜尋。

  一種是從根節點開始搜尋,和B樹類似,不過如果非分葉節點的關鍵碼等於給定值,搜尋並不停止,而是繼續沿右指標,一直查到分葉節點上的關鍵碼。所以無論搜尋是否成功,都將走完樹的所有層。

  B+ 樹中,資料對象的插入和刪除僅在分葉節點上進行。

  這兩種處理索引的資料結構不同之處:


  a,B樹中同一鍵值不會出現多次,並且它有可能出現在葉結點,也有可能出現在非葉結點中。而B+樹的鍵一定會出現在葉結點中,並且有可能在非葉結點中也有可能重複出現,以維持B+樹的平衡。

  b,因為B樹鍵位置不定,且在整個樹結構中只出現一次,雖然可以節省儲存空間,但使得在插入、刪除操作複雜度明顯增加。B+樹相比來說是一種較好的折中。

  c,B樹的查詢效率與鍵在樹中的位置有關,最大時間複雜度與B+樹相同(在葉結點的時候),最小時間複雜度為1(在根結點的時候)。而B+樹的時候覆雜度對某建成的樹是固定的。


對B,B+,B-,B*  樹的講解,可以參照

http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.html


 B樹:二叉樹,每個結點只儲存一個關鍵字,等於則命中,小於走左結點,大於

走右結點;


 B-樹:多路搜尋樹,每個結點儲存M/2到M個關鍵字,非葉子結點儲存指向關鍵

字範圍的子結點;

    所有關鍵字在整顆樹中出現,且只出現一次,非葉子結點可以命中;


B+樹:在B-樹基礎上,為葉子結點增加鏈表指標,所有關鍵字都在葉子結點

中出現,非葉子結點作為葉子結點的索引;B+樹總是到葉子結點才命中;


 B*樹:在B+樹基礎上,為非葉子結點也增加鏈表指標,將結點的最低利用率,在B+樹的非根和非葉子結點再增加指向兄弟的指標

從1/2提高到2/3;



相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.