B樹 B 樹及索引

2021-08-27 23:49:01 字數 705 閱讀 9944

b樹:

每個節點都儲存key和data,所有節點組成這棵樹,並且葉子節點指標為null。

b+樹:

只有葉子節點儲存data,葉子節點包含了這棵樹的所有鍵值,葉子節點不儲存指標。後來在b+樹上加了順序訪問指標,也就是每個葉子節點增加乙個指向相鄰葉子節點的指標。可以像遍歷鍊錶一樣遍歷葉子節點。b+樹是資料庫系統實現索引的首選資料結構。

一般來說,索引很大,往往以索引檔案的形式儲存在磁碟上,索引查詢時產生磁碟i/o消耗,相對於記憶體讀取,i/o訪問的消耗要高幾個數量級,評價乙個資料結構作為索引的優劣最重要的指標就是在查詢過程中磁碟io操作次數的時間複雜度。樹高度越小,io次數越少。

用b+樹而不是b樹的原因是b+樹內節點不儲存data,這樣乙個節點可以儲存更多的key。

在mysql中,最常用的兩個儲存引擎是myisam和innodb,它們對索引的實現方式是不同的。

myisam:data存放的是資料位址。索引是索引,資料是資料。

innodb:data存的是資料本身,索引也是資料。

b+樹索引和hash索引

b+樹是乙個平衡的多叉樹。b+樹從根節點到葉子節點的搜尋效率基本相當,不會出現大幅波動;

雜湊索引採用一定的雜湊演算法,把鍵值換成新的雜湊值,檢索時不需要類似b+樹那樣從根節點逐級查詢,只需一次雜湊演算法即可定位到相應的位置。

索引之B樹 B 樹 B 樹 B 樹

原文索引之b樹 b 樹 b 樹 b 樹 b 樹即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left 和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中...

索引之B樹 B 樹 B 樹 B 樹詳解

索引之b樹 b 樹 b 樹 b 樹 b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則...

B樹與B 樹索引

b 樹 資料庫結構使用樹的結構索引,從演算法邏輯上看,二叉查詢樹的查詢速度和比較次數都是最小的。資料庫的索引儲存在磁碟上,當資料量比較大的時候,索引的大小可能有幾個g 甚至更多。當我們利用索引查詢的時候,不可能把整個索引載入到記憶體,能做的只有逐一載入每乙個磁碟頁,磁碟頁對應索引樹的節點。當利用二叉...