B樹與B+樹的區別

B樹是一顆多路平衡查找樹。每一個節點最多有m-1個關鍵字(能夠存有的鍵值對)。根節點最少能夠只有1個關鍵字,非根節點至少有m/2個關鍵字。每一個節點中的關鍵字都按照從小到大的順序排列,每一個關鍵字的左子樹中的全部關鍵字都小於它,而右子樹中的全部關鍵字都大於它。全部葉子節點都位於同一層,或者說根節點到每一個葉子節點的長度都相同。每一個節點都存有索引和數據,也就是對應的key和value。數據庫


B+樹有兩種類型的節點:內部結點(也稱索引結點)和葉子結點。內部節點就是非葉子節點,內部節點不存儲數據,只存儲索引,數據都存儲在葉子節點。內部結點中的key都按照從小到大的順序排列,對於內部結點中的一個key,左樹中的全部key都小於它,右子樹中的key都大於等於它。葉子結點中的記錄也按照key的大小排列。每一個葉子結點都存有相鄰葉子結點的指針,葉子結點自己依關鍵字的大小自小而大順序連接。父節點存有右孩子的第一個元素的索引。
B+樹相對於B樹的優點:
1.單一節點存儲的元素更多,使得查詢的IO次數更少,因此也就使得它更適合作爲數據庫MySQL的底層數據結構了。
2.全部的查詢都要查找到葉子節點,查詢性能是穩定的,而B樹,每一個節點均可以查找到數據,因此不穩定。
3.全部的葉子節點造成了一個有序鏈表,更加便於查找。數據結構

相關文章
相關標籤/搜索