Mysql 爲什麼要選擇 B+Tree

Mysql 爲什麼要選擇 B+Tree算法對比

二叉樹

Mysql 爲什麼要選擇 B+Tree
當我查找 8 的時候需要走五步

Mysql 爲什麼要選擇 B+Tree
紅黑樹

Mysql 爲什麼要選擇 B+Tree
當我查詢8的時候需要四次 相對於二叉樹有了一些優化 沒有無限延伸.紅黑樹的深度會很深(深度不可控制)

Mysql 爲什麼要選擇 B+Tree
hash

數據量大的話

Mysql 爲什麼要選擇 B+Tree
查詢很快(不能範圍查找)

BTree

Mysql 爲什麼要選擇 B+Tree
查詢只需要查兩步就可以找到,缺點攜帶(data)擴大橫向減少縱向深度

ps:java拿取數據一般是這樣的:java程序-->CPU--->內存---->硬盤,而內存與硬盤的交互是有大小限制的,是一頁數據4k左右,所以不能把所有數據都放在一個節點來獲取,一般來說節點會盡量預存4K容量。
Mysql 爲什麼要選擇 B+Tree
B+Tree

Mysql 爲什麼要選擇 B+Tree
Mysql 爲什麼要選擇 B+Tree

ps:data不放在非葉子節點來增加度(小節點),一般會一百個以上使得深度是3~5,從而減少查詢次數。並且,葉子節點之間會有指針,數據又是遞增的,這使得我們範圍查找可以通過指針連接查找,而不再從上面節點往下一個個找。既減少了查詢次數,又提供了範圍查詢.

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