MySQL爲什麼選擇B+TREE作爲索引的存儲結構

索引是爲了加速對錶中數據行的檢索而創建的一種分散存儲的數據結構。實現這種數據結構方式有多種,這裏只介紹B-TREE和B+TREE,並簡單做個對比,最後說明MySQL數據庫採用B+TREE作爲索引數據結構的原因。

B-TREE

B-TREE也稱多路平衡查找樹,如果有一M路平衡查找樹,那麼每個節點至多可以擁有M個子節點,並且該節點關鍵字個數最多爲M-1個,同時每個節點保存關鍵字對應的數據相關信息。

B+TREE

B+TREE是加強版多路平衡查找樹,和B-TREE相比,B+TREE具有以下特點:B+TREE節點關鍵字搜索採用閉合區間;B+TREE非葉節點不保存數據相關信息,只保存關鍵字和子節點的引用;B+TREE關鍵字對應的數據保存在葉子節點中;B+TREE葉子節點是順序排列的,並且相鄰節點具有順序引用的關係。

爲什麼選用B+TREE

1、B+TREE是B-TREE的變種(PLUS 版)多路絕對平衡查找樹,他擁有B-TREE的優勢。

2、B+TREE掃庫/表能力更強

B-TREE由於數據是存放在每個節點上的,所有B-TREE掃庫/表需要遍歷每個節點,B+TREE只需要掃描葉子節點即可,並且葉子節點是順序排列的。

3、B+TREE的磁盤讀寫能力更強

由於B+TREE非葉子節點中只存放關鍵字和指針,所以每個節點可以存放更多關鍵字,進而磁盤I/O更少,所以說磁盤讀寫能力更強。

4、B+TREE的排序能力更強

B+TREE的存儲結構具有天然的排序性,所有的葉子節點是順序排列的。

5、B+TREE的查詢效率更加穩定

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章