MySQL的索引存储数据结构BTree和B+Tree的区别
生活随笔
收集整理的這篇文章主要介紹了
MySQL的索引存储数据结构BTree和B+Tree的区别
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- BTree 原理示意圖
- B+Tree 原理示意圖
- B+Tree的樹層級很少
- B+Tree 可以高效支持范圍查找
BTree 原理示意圖
注:BTree 就是 B-Tree,實際上官方并沒有 B-Tree 的說法。
B+Tree 原理示意圖
B+Tree的樹層級很少
BTree 的數(shù)據(jù)存在每個節(jié)點中,所以每個節(jié)點能夠保存的索引值很少,所以存儲大量數(shù)據(jù)時,樹的層級會很高,這樣就導致與磁盤的 IO 交互次數(shù)增多,查找數(shù)據(jù)的效率就變得很低。
B+Tree 的數(shù)據(jù)全部保存在末端的葉子節(jié)點中,這樣非葉子節(jié)點能夠保存的索引值就很多,最終導致末端的葉子節(jié)點的數(shù)量非常龐大,保存2000多萬條數(shù)據(jù)時,B+Tree 只要 3 層,而 BTree 則需要至少 6 層
B+Tree 可以高效支持范圍查找
BTree 的葉子節(jié)點之間沒有雙向指針,不能很好地支持范圍查找;B+Tree 葉子節(jié)點之間有雙向指針,從左到右的索引值是從小到大的順序排序,可以高效支持范圍的查找
總結(jié)
以上是生活随笔為你收集整理的MySQL的索引存储数据结构BTree和B+Tree的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库各种锁详解
- 下一篇: MySQL的存储引擎InnoDB,B+T