1,b樹的基本介紹
①b樹,相比於二叉樹、紅黑樹而言,它的特點就是樹的高度比其他型別的樹要低很多。如何做到低呢?b樹中的每個結點的分支數目非常大,即每個結點有很多很多孩子結點。這樣,在相同結點數目情況下,b樹就比其他樹的高度低了。
②b樹,是針對磁碟(外存)而設計的資料結構。由於記憶體有限,巨大量的資料還是儲存在磁碟上,磁碟訪問時間要遠遠大於內在的訪問時間,當訪問磁碟上的資料時,如何減少訪問讀寫磁碟的次數?
首先了解磁碟的結構:參考硬碟的讀寫原理
在磁碟的實際讀取時,每次讀取不會唯讀乙個資料項,而是每次讀取乙個或多個頁面,----這是區域性性原理的應用。
也即,「預讀的長度一般為頁(page)的整倍數。頁是計算機管理儲存器的邏輯塊,硬體及作業系統往往將主存和磁碟儲存區分割為連續的大小相等的塊,每 個儲存塊稱為一頁(在許多作業系統中,頁得大小通常為4k),主存和磁碟以頁為單位交換資料。當程式要讀取的資料不在主存中時,會觸發乙個缺頁異常,此時 系統會向磁碟發出讀盤訊號,磁碟會找到資料的起始位置並向後連續讀取一頁或幾頁載入記憶體中,然後異常返回,程式繼續執行。」----這是計算機記憶體管理的功能。
在b樹應用中,需要處理的資料量巨大,無法將資料一次都裝入主存,b樹將所需要的頁查詢出來並複製到主存中,而後將修改後的頁寫回到磁碟。因此,通常b樹的結點大小相當於乙個磁碟頁大小。由於b樹的高度非常小,(比如每個結點包含1000個關鍵字,高度為2的b樹,總共可以含有10億個關鍵字。)當查詢b樹中的某個結點時,查詢次數(樹高)也非常少。
將b樹的每個結點 「對應」 到磁碟的每個頁面上,訪問磁碟的次數也就少了。
2,b樹/b+ 樹為什麼用做資料庫的索引?
參考:b-樹和b+樹的應用:資料搜尋和資料庫索引
關於索引的一段介紹:
「好在電腦科學的發展提供了很多更優秀的查詢演算法,例如二分查詢(binary search)、二叉樹查詢(binary tree search)等。如果稍微分析一下會發現,每種查詢演算法都只能應用於特定的資料結構之上,例如二分查詢要求被檢索資料有序,而二叉樹查詢只能應用於二叉查詢樹上,但是資料本身的組織結構不可能完全滿足各種資料結構(例如,理論上不可能同時將兩列都按順序進行組織),所以,在資料之外,資料庫系統還維護著滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用(指向)資料,這樣就可以在這些資料結構上實現高階查詢演算法。這種資料結構,就是索引。
索引是對資料庫表 中乙個或多個列的值進行排序的結構。與在表 中搜尋所有的行相比,索引用指標 指向儲存在表中指定列的資料值,然後根據指定的次序排列這些指標,有助於更快地獲取資訊。通常情 況下 ,只有當經常查詢索引列中的資料時 ,才需要在表上建立索引。索引將占用磁碟空間,並且影響數 據更新的速度。但是在多數情況下 ,索引所帶來的資料檢索速度優勢大大超過它的不足之處。」
也就是說,資料庫中儲存的資料量是非常非常巨大的,但是我們不可能把資料組織成滿足二分查詢演算法等這種要求資料滿足特定條件(在記憶體中、有序、位址連續)形式。在這種情況下,如何更快地獲取資料?這就是索引的作用了。
而b+樹之所以適合做資料庫索引,估計也是利用了它只需要少量幾次訪問磁碟就能從大量資料中查詢資料。
從資料庫儲存,檔案結構談到b樹,雜湊
硬碟的讀寫原理
從b樹、b+樹、b*樹談到r 樹
b-樹和b+樹的應用:資料搜尋和資料庫索引
**演算法和資料結構(10):平衡查詢樹之b樹
B 樹 B 樹 學習總結
一,b 樹的定義及介紹 為什麼會有b 樹?熟悉的樹的結構有二叉樹查詢樹或者平衡二叉樹 平衡二叉樹保證最壞情況下各個操作的時間複雜度為o logn 但是為了保持平衡,在插入或刪除元素時,需要進行旋轉啊.一系列操作,因此實現起來比較複雜。而對於二叉查詢樹,基本操作在最壞情況下會出現o n 的時間複雜度。...
B 樹 B 樹 學習總結
一,b 樹的定義及介紹 為什麼會有b 樹?熟悉的樹的結構有二叉樹查詢樹或者平衡二叉樹 平衡二叉樹保證最壞情況下各個操作的時間複雜度為o logn 但是為了保持平衡,在插入或刪除元素時,需要進行旋轉啊.一系列操作,因此實現起來比較複雜。而對於二叉查詢樹,基本操作在最壞情況下會出現o n 的時間複雜度。...
B樹學習總結
1,b樹的基本介紹 b樹,相比於二叉樹 紅黑樹而言,它的特點就是樹的高度比其他型別的樹要低很多。如何做到低呢?b樹中的每個結點的分支數目非常大,即每個結點有很多很多孩子結點。這樣,在相同結點數目情況下,b樹就比其他樹的高度低了。b樹,是針對磁碟 外存 而設計的資料結構。由於記憶體有限,巨大量的資料還...