這是數據庫索引相關內容的第一篇
複製代碼
目錄:數據庫
正文:數據庫設計
什麼是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
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
4. 什麼狀況下使用B樹blog
如第一節所述,B樹是爲磁盤或者其餘直接存儲的輔助存儲設備設計的。
典型的B樹使用場景就是數據庫。
複製代碼
從樹的高度公式能夠看出,t越大,即節點內關鍵字越多,樹的高度越小,磁盤存取次數越少。排序
樹的節點關鍵字越多,那麼多少合適呢?索引
其實,節點中關鍵字,就是磁盤一次要讀取的大小,以磁盤的頁爲單位,磁盤通常一次會加載1個或多個頁,1頁的大小通常在4k~8k
因此關鍵字少了,一次磁盤讀取,會形成浪費;關鍵字多了,一次磁盤讀取就讀不下。
因此設置合理的t值很重要。而且在動態插入刪除中要保證B樹也符合B樹的上述特徵,來知足應用場景須要。
關於B樹的插入和刪除,下章再說...
其餘相關章節
複製代碼
數據庫索引相關文章之一:《B樹,一點都不神祕》
數據庫索引相關文章之二:《B樹很簡單,插入so easy》
數據庫索引相關文章之三:《索引》
數據庫索引相關文章之四:《什麼索引算是好的索引》
數據庫索引相關文章之五:《如何發現及替換不合適的索引》
數據庫索引相關文章之六:《索引總結》