資料結構(十一)B樹

2022-07-03 17:42:08 字數 902 閱讀 1823

之前的二叉排序樹,平衡二叉樹都是基於二叉樹的實現,但是在搜尋過程中,效率和樹的深度有關,所以就想到把二叉樹改為多叉樹,b樹和b+樹都基於多叉樹的實現

涉及到遍歷的場景,b樹就有明顯缺陷了,需要類似樹的中序遍歷,而這樣的io開銷是很大的,從而就引出了b+樹

也就是說,真正的資料存在葉子結點,其它結點存放的都是葉子結點的索引

隨機查詢則從根結點開始遍歷,順序查詢則可以從最左側的葉子結點遍歷

大多數資料庫,如mysql,底層的資料結構也是採用b+樹來實現

1.樹的深度會很大影響搜尋效率,每多一層,就多一次io,所以一般而言樹深度越小越好,而b樹/b+樹支援多階,符合要求

2.資料量大了,就會出現索引,索引多了也會佔據儲存空間,b+樹只在葉子結點儲存真實資料,其它結點儲存索引,可以提高索引結點的空間利用率

3.結合磁碟特點,磁碟尋找資料需要經歷三個時間,尋道時間旋轉時間傳送時間,而其中尋道時間消耗的時間最長。磁碟讀取資料是以盤塊(block)為基本單位的。位於同一盤塊中的所有資料都能被一次性全部讀取出來。而磁碟io代價主要花費在查詢時間ts上。因此我們應該盡量將相關資訊存放在同一盤塊,同一磁軌中。或者至少放在同一柱面或相鄰柱面上,以求在讀/寫資訊時儘量減少磁頭來回移動的次數。所以一般資料庫中的b+樹採用與盤塊大小相同的階數。

盤塊:也就是扇區,一般是連續的512位元組

尋道時間:磁頭找到對應的磁軌

旋轉時間:在磁軌上通過旋轉找到對應的資料

傳送時間:通過計算機匯流排載入到記憶體

從磁碟的使用角度來說明資料結構的應用場景

//b+樹和在資料庫innodb的應用

資料結構 B樹,B 樹

注意b 樹就是b樹,只是乙個符號.簡介b b 樹是為了磁碟或其它儲存裝置而設計的一種平衡多路查詢樹 相對於二叉,b樹每個內節點有多個分支 與紅黑樹相比,在相同的的節點的情況下,一顆b b 樹的高度遠遠小於紅黑樹的高度 在下面b b 樹的效能分析中會提到 b b 樹上操作的時間通常由訪問磁碟的時間和c...

資料結構 B樹 B 樹

b樹 b樹即 balance tree 也就是平衡樹,它是在搜尋樹的基礎上,維持每乙個節點的左右子樹高度之差不超過1的結構,使得搜尋的平均時間複雜度為o log n 級別。二叉搜尋樹 對於任何乙個節點n,其左邊子樹的所有節點值小於n 其右邊子樹的所有節點的值大於n 給點乙個查詢值,從根節點值開始,一...

資料結構 B樹 B 樹

經典資料結構 b樹與b 樹的解釋 追求極致 磁碟中有兩個機械運動的部分,分別是碟片旋轉和磁臂移動。碟片旋轉就是多少轉每分鐘,而磁碟移動則是在碟片旋轉到指定位置以後,移動磁臂後開始進行資料的讀寫。因為是機械移動,所以盡量減少io,節省開銷 利用平衡樹的優勢加快查詢的穩定性和速度 b樹其分支結點和葉子節...