二叉樹->b-樹,解決的是讀索引的IO次數問題
在真實的數據庫中
在真實的數據庫中
往往索引本身的數據量也是非常龐大的
樹的查找,其實是每一層需要做一次判斷因為索引很大,只能存在文件里,不能一次加載,所以沒判斷一層,都需要有一次磁盤IO,所以查找IO次數最壞的情況
就是樹的高度-1,加入你要的節點在最后一層的話
二叉樹,是只有兩個子節點的一單數據量一大的話
樹高會很恐怖B-Tree,的度是沒有限制的
可以打打減少這個數的高度,從而減少磁盤讀的次數b-tree -> b+tree :這個是針對IO的再次優化
b+tree,的父節點是不存數據的
數據庫索引,其實一個節點剛好占的是硬盤的一頁空間
由于索引節點不存數據
一個硬盤頁,也就是一個節點的度就可以更大
可以最大程度減少樹的高度
之所以一個節點剛好占一頁,也是IO的問題,一次硬盤IO只能讀一頁
這是結構上的改進
效果就是一個節點一次IO的度更大了
他這個意思就是說,如果有索引,一次索引查找,基本不會超過2次硬盤IO
這還只是b-tree
b-tree這玩意兒就讀B樹
很多人讀B減數是誤讀