【MySQL】B樹和B+樹的區別


1、B樹

  • 這里的 B 是 Balance(平衡)的縮寫。它是一種多路的平衡搜索樹。
  • 它跟普通的平衡二叉樹的不同是,B樹的每個節點可以存儲多個數據,而且每個節點不止有兩個子節點,最多可以有上千個子節點。
  • B樹中每個節點都存放着索引和數據,數據遍布整個樹結構,搜索可能在非葉子節點結束,最好的情況是O(1)。
  • 一般一棵 B 樹的高度在 3 層左右,3 層就可滿足百萬級別的數據量

 

 

B樹 每個節點都存儲了一定的范圍區間,區間更多的情況下,搜索也就更快。
比如普通的二叉樹對於1~100的索引值,首先分為1~50和51~100兩部分。
而B樹可以分為四個區間 1~25,26~50,51~75,76~100。甚至可以划分為更多區間,這樣一次就能排除四分之三的數據

2、B+樹

B+樹是B樹的一種變種,它與 B樹 的 區別 是:

  • 葉子節點保存了完整的索引和數據,而非葉子節點只保存索引值,因此它的查詢時間固定為 log(n).
  • 葉子節點中有指向下一個葉子節點的指針,葉子節點類似於一個單鏈表
  • 正因為葉子節點保存了完整的數據以及有指針作為連接,B+樹可以增加了區間訪問性,提高了范圍查詢,而B樹的范圍查詢相對較差
  • B+樹更適合外部存儲。因為它的非葉子節點不存儲數據,只保存索引。
  • InnerDB使用的正是這種當做索引

B+樹的示意圖如下:

參考:https://blog.csdn.net/a519640026/article/details/106940115/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM