阿龙的学习笔记--- B-树和B+树 以及 MySQL的索引机制总结
-
B-樹和B+樹原理詳解:https://blog.csdn.net/ywlmsm1224811/article/details/97890446
-
深入理解MySQL索引之B+Tree: 寫得好!InnoDB和MyISEM的區別也很清楚。https://blog.csdn.net/b_x_p/article/details/86434387
-
MySQL索引詳解:寫得超詳細。https://blog.csdn.net/IT_10/article/details/95488179
-
MyISAM和InnoDB的區別:超詳細https://blog.csdn.net/helloxiaozhe/article/details/88601028
-
B-樹和B+樹區別:
- b+樹的中間節點不保存數據,(一般一個節點大小為一個磁盤頁) 所以磁盤頁能容納更多節點元素,更“矮胖”;
- b+樹查詢必須查找到葉子節點,b樹只要匹配到即可不用管元素位置,因此b+樹查找更穩定;
- 葉子節點之間有指針,鏈式。對于范圍查找來說,b+樹只需遍歷葉子節點鏈表即可。
-
為啥最終選擇了B+樹作為MySQL的結構:
B+Tree是B TREE的變種,B TREE能解決的問題,B+TREE也能夠解決(降低樹的高度,增大節點存儲數據量)
B+Tree掃庫和掃表能力更強。如果我們要根據索引去進行數據表的掃描,對B TREE進行掃描,需要把整棵樹遍歷一遍,而B+TREE只需要遍歷他的所有葉子節點即可(葉子節點之間有引用)。
B+TREE磁盤讀寫能力更強。他的根節點和支節點不保存數據區,所以根節點和支節點同樣大小的情況下,保存的關鍵字要比B TREE要多。而葉子節點不保存子節點引用,能用于保存更多的關鍵字和數據。所以,B+TREE讀寫一次磁盤加載的關鍵字比B TREE更多。
B+Tree排序能力更強。上面的圖中可以看出,B+Tree天然具有排序功能。
B+Tree查詢性能穩定。B+Tree數據只保存在葉子節點,每次查詢數據,查詢IO次數一定是穩定的。當然這個每個人的理解都不同,因為在B TREE如果根節點命中直接返回,確實效率更高。
總結
以上是生活随笔為你收集整理的阿龙的学习笔记--- B-树和B+树 以及 MySQL的索引机制总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 淘宝电商:淘宝卖家如何快速提升店铺自然搜
- 下一篇: linux 同一个交换机 不通,同一个交