日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多路平衡查找树(B Tree)(分裂、合并)

發布時間:2024/4/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多路平衡查找树(B Tree)(分裂、合并) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Balanced Tree

這個就是我們的多路平衡查找樹,叫做B Tree(B 代表平衡)

跟AVL 樹一樣,B 樹在枝節點和葉子節點存儲鍵值、數據地址、節點引用。

它有一個特點:分叉數(路數)永遠比關鍵字數多1。比如我們畫的這棵樹,每個節點存儲兩個關鍵字,那么就會有三個指針指向三個子節點。

?B Tree 的查找規則是什么樣的呢?

比如我們要在這張表里面查找15。

因為15 小于17,走左邊。

因為15 大于12,走右邊。

在磁盤塊7 里面就找到了15,只用了3 次IO。

這個是不是比AVL 樹效率更高呢?

那B Tree 又是怎么實現一個節點存儲多個關鍵字,還保持平衡的呢?跟AVL 樹有什么區別?

https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

比如Max Degree(路數)是3 的時候,我們插入數據1、2、3,在插入3 的時候,本來應該在第一個磁盤塊,但是如果一個節點有三個關鍵字的時候,意味著有4 個指針,子節點會變成4 路,所以這個時候必須進行分裂。把中間的數據2 提上去,把1 和3 變成2 的子節點。

如果刪除節點,會有相反的合并的操作。

注意這里是分裂和合并,跟AVL 樹的左旋和右旋是不一樣的。

我們繼續插入4 和5,B Tree 又會出現分裂和合并的操作。

從這個里面我們也能看到,在更新索引的時候會有大量的索引的結構的調整,所以解釋了為什么我們不要在頻繁更新的列上建索引,或者為什么不要更新主鍵。

節點的分裂和合并,其實就是InnoDB 頁的分裂和合并。

?

總結

以上是生活随笔為你收集整理的多路平衡查找树(B Tree)(分裂、合并)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。