B樹,一點都不神祕

這是數據庫索引相關內容的第一篇
複製代碼

B樹

目錄:數據庫

  1. 什麼是B樹
  2. B樹的最小度數
  3. B樹的高度
  4. 什麼狀況下使用B樹
  5. B樹的插入
  6. B樹的刪除

正文:數據庫設計

  1. 什麼是B樹post

    1>  是一種平衡搜索樹
    2>  爲磁盤或者其餘直接存儲的輔助存儲設備設計
    3>  相似於紅黑樹,可是更下降磁盤操做I/O
    4>  節點分爲內部節點(非葉子節點)和葉子節點
    5>  節點能夠不止一個關鍵字
    6>  假設節點中的關鍵字個數爲n,則該節點的孩子數必定是n+1
    7>  每一個節點內部的排序必定是從左到右增大(以下圖30 < 80,50 < 60)
    8>  假設節點x的關鍵字的個數爲n,從左到右爲x1,x2,...xn(以下圖n=2,x1=50,x2=60)
        由第6>條得知其孩子數爲n+1,從左到右爲c1,c2,...cn+1(以下圖c1=(35,40),c2=55,c3=70)
        那麼排序規則必定是c1<x1<c2<x2<..xn<cn+1
    9>  每一個葉子節點必定具備相同的深度,即樹的高度是一致的。
    10> 每一個節點關鍵字的個數有上限和下限,取決於樹設定的最小度數t。
    		t -1 <= n <= 2t -1
    	根節點不受最小t -1的限制,若是樹非空,根節點至少有1個關鍵字
    複製代碼

典型的B樹以下圖 spa

在這裏插入圖片描述
2. B樹的最小度數

1> 每一個節點關鍵字的個數有上限和下限,取決於樹設定的最小度數t。
			t -1 <= n <= 2t -1
	   根節點不受最小t -1的限制,若是樹非空,根節點至少有1個關鍵字
	
	2> 當一個節點剛好有2t-1個關鍵字,則該節點是滿的(在插入B樹時用到該概念)
	3> 當一個節點剛好是t-1個關鍵字時,則該節點是最小狀態(在刪除B樹時用到該概念)
複製代碼

3. B樹的高度設計

爲何咱們要關心B樹的高度,由於B樹主要是爲磁盤訪問設計的,B樹的高度與磁盤存取次數成正比。code

由於根節點最小關鍵字數目爲1,其餘節點最少爲t-1,則樹上的關鍵字個數n知足:cdn

在這裏插入圖片描述
則樹的高度知足:

在這裏插入圖片描述
因此隨着t的增大,h減小,磁盤的存取次數也減小。

4. 什麼狀況下使用B樹blog

如第一節所述,B樹是爲磁盤或者其餘直接存儲的輔助存儲設備設計的。
典型的B樹使用場景就是數據庫。
複製代碼

從樹的高度公式能夠看出,t越大,即節點內關鍵字越多,樹的高度越小,磁盤存取次數越少。排序

樹的節點關鍵字越多,那麼多少合適呢?索引

其實,節點中關鍵字,就是磁盤一次要讀取的大小,以磁盤的頁爲單位,磁盤通常一次會加載1個或多個頁,1頁的大小通常在4k~8k

因此關鍵字少了,一次磁盤讀取,會形成浪費;關鍵字多了,一次磁盤讀取就讀不下。

因此設置合理的t值很重要。而且在動態插入刪除中要保證B樹也符合B樹的上述特徵,來知足應用場景須要。

關於B樹的插入和刪除,下章再說...

寫在最後,學好B樹還有助於咱們理解數據庫設計


其餘相關章節
複製代碼

數據庫索引相關文章之一:《B樹,一點都不神祕》
數據庫索引相關文章之二:《B樹很簡單,插入so easy》
數據庫索引相關文章之三:《索引》
數據庫索引相關文章之四:《什麼索引算是好的索引》
數據庫索引相關文章之五:《如何發現及替換不合適的索引》
數據庫索引相關文章之六:《索引總結》

相關文章
相關標籤/搜索