什麼是b+樹呢?在說b+樹之前我們先了解一下為什麼要有b樹,其實這些樹最開始都是為了解決某種系統中,查詢效率低的問題。b樹其實最開始源於的是二叉樹,二叉樹是只有左右孩子的樹,當資料量越大的時候,二叉樹的節點越多,那麼當從根節點搜尋的時候,影響查詢效率。所以如果這些節點儲存在外儲存器中的話,每訪問乙個節點,相當於進行了一次i/o操作。
這裡面說下外儲存器和記憶體儲器:
外儲存器:就是將資料儲存到磁碟中,每次查詢的某個元素的時候都要取磁碟中查詢,然後再寫入記憶體中,容量大,但是查詢效率低。
記憶體儲器:就是將資料放在記憶體中,查詢快,但是容量小。
我們大致了解了b樹和什麼是外儲存器,記憶體儲器,那麼就知道其實b+樹就是為了解決資料量大的時候儲存在外儲存器時候,查詢效率低的問題。接下來就說下b+樹的特點:
中間元素不存資料,只是當索引用,所有資料都儲存在葉子結點中。
所有的中間節點在子節點中要麼是最大的元素要麼是最小的元素 。
葉子結點包含所有的資料,和指向這些元素的指標,而且葉子結點的元素形成了自小向大這樣子的鍊錶。
如下這個圖就很好的說明了b+的特點
看圖其實可以看到乙個節點可以存放多個資料,查詢乙個節點的時候可以有多個元素,大大提公升查詢效率,這就是為什麼資料庫索引用的就是b+樹,因為索引很大,不可能都放在記憶體中,所以通常是以索引檔案的形式放在磁碟上,所以當查詢資料的時候就會有磁碟i/o的消耗,而b+樹正可以解決這種問題,減少與磁碟的互動,因為進行一次i/o操作可以得到很多資料,增大查詢資料的命中率。
這就可以很明顯的看出b+樹的優勢:
單個節點可以儲存更多的資料,減少i/o的次數。
查詢效能更穩定,因為都是要查詢到葉子結點。
葉子結點形成了有序鍊錶,便於查詢。
b+樹是怎麼進行查詢的呢,分為單元素查詢和範圍查詢
單元素查詢是從根一直查詢到葉子結點,即使中間結點有這個元素也要查到葉子結點,因為中間結點只是索引,不存資料。比如要查元素3,如圖:
範圍查詢是直接從鍊錶查,比如要查元素3到元素8的,如圖:
什麼是B樹?
b樹,是乙個m叉平衡查詢樹。如果m為2即為二叉查詢平衡樹,一般m都是大於2的。其特性如下 資料項儲存在樹的葉子節點。所有樹的葉子節點都在相同的深度上,並由l 2 小數字進1 和l之間個資料項。非葉節點儲存直到m 1個關鍵字以指示搜尋的方向 關鍵字i代表子樹i 1中的最小的關鍵字。樹的根或者一片樹葉節...
什麼是B 樹?
b 樹是為磁碟或其他直接訪問輔助裝置而設計的一種m叉平衡查詢樹,其特性如下 每個節點m個關鍵字和m棵子樹,每個關鍵字對應乙個子樹。除根節點外,其餘所有節點的關鍵字數在m 2 小數字進1 和m之間 根節點的關鍵字數在 1,m 之間。所有的資料項,都是按照大小順序存放在同一層的葉子節點中,各葉子節點間用...
什麼是B 樹?
什麼是b 樹呢?b 樹全名 balance tree,讀做b樹 中間的 只是分隔作用,不要讀做b減樹哦 b樹首先它也是屬於樹結構,除了樹結構的節點有序 查詢高效外,還有以下特性。以乙個m階的b樹來舉栗 根節點至少包含兩個子節點 每個中間節點包括k 1個元素和k個子節點,其中m 2 k m 每乙個葉子...