資料結構之B數和B 樹

2021-08-26 15:09:03 字數 1120 閱讀 7956

本文**:

簡介b/b+樹是為了磁碟或其它儲存裝置而設計的一種平衡多路查詢樹(相對於二叉,b樹每個內節點有多個分支),與紅黑樹相比,在相同的的節點的情況下,一顆b/b+樹的高度遠遠小於紅黑樹的高度(在下面b/b+樹的效能分析中會提到).b/b+樹上操作的時間通常由訪問磁碟的時間和cpu計算時間這兩部分構成,而cpu的速度非常快,所以b樹的操作效率取決於訪問磁碟的次數,關鍵字總數相同的情況下b樹的高度越小,磁碟i/o所花的時間越少.

b樹的定義和性質:對於m階的b樹

這裡只是乙個簡單的b樹,在實際中b樹節點中關鍵字很多的.上面的圖中比如35節點,35代表乙個key(索引),而小黑塊代表的是這個key所指向的內容在記憶體中實際的儲存位置.是乙個指標.

b+樹是應檔案系統所需而產生的一種b樹的變形樹(檔案的目錄一級一級索引,只有最底層的葉子節點(檔案)儲存資料.),非葉子節點只儲存索引,不儲存實際的資料,資料都儲存在葉子節點中.這不就是檔案系統檔案的查詢嗎?我們就舉個檔案查詢的例子:有3個資料夾,a,b,c, a包含b,b包含c,乙個檔案yang.c, a,b,c就是索引(儲存在非葉子節點), a,b,c只是要找到的yang.c的key,而實際的資料yang.c儲存在葉子節點上. 

所有的非葉子節點都可以看成索引部分

b+樹的性質(下面提到的都是和b樹不相同的性質)

b和b+樹主要用在檔案系統以及資料庫做索引.比如mysql;

在mysql中,最常用的兩個儲存引擎是myisam和innodb,它們對索引的實現方式是不同的。

myisam 

data存的是資料位址。索引是索引,資料是資料。

data存的是資料本身。索引也是資料。

資料結構之B 樹和B 樹

特意說明,本文只簡述b樹和b 樹的基本概念,並不涉及刪除,插入等操作 b樹中所有結點的孩子結點個數的最大值稱為b樹的階,通常用m表示,從查詢效率考慮,要求m 3。一顆m階的b樹應該滿足以下條件 每個結點最多有m個分支 而最少分支樹要看是否為根結點,如果是根結點且不是葉子結點,則至少有兩個分支,非根非...

資料結構之B樹 B 樹 B 樹 B 樹

b 樹b 樹 b b b 樹是為了磁碟或其它儲存裝置而設計的一種平衡多路查詢樹 相對於二叉,b樹每個內節點有多個分支 與紅黑樹相比,在相同的的節點的情況下,一顆b樹的高度遠遠小於紅黑樹的高度.b樹上操作的時間通常由訪問磁碟的時間和cpu計算時間這兩部分構成,而cpu的速度非常快,所以b樹的操作效率取...

資料結構之B 樹 B 樹

b樹的概念是為了解決一些現實問題而提出的,當資料量太大時,而記憶體中又無法儲存這麼多的資料,那麼就需要將資料儲存在磁碟上,如果繼續採用平衡樹的方法就會帶來一些問題,平衡樹每個節點都會分為兩個節點,那麼當資料太大的時候,樹的高度也會不斷增減,io操作的次數也隨之增加,所以需要降低樹的高度,所以才有了乙...