【MySQL】B+樹索引深度計算


問題

  bigint類型字段作為做為主鍵索引,一顆深度為3的B+樹能存放多少個索引數據

 

分析

  1.MySQL數據組織的最小單位是頁,也叫數據頁,每個數據頁大小是16KB,索引也是存放在索引的數據頁中

  2.主鍵索引是聚簇索引,結合B+樹的數據結構,主鍵索引在非葉子節點上不存儲數據,僅在葉子節點上才存儲完整的數據,因此深度第1層和第2層的數據頁中不存儲數據

  3.bigint字段占用內存大小是8Byte,由B+樹的排列方式可知,兩個索引之間存放了指向下一個節點的指針,指針大小約為6Byte(基於C++實現的MySQL中的指針計算而來的經驗值)

  4.索引遍歷都是從根節點,根節點近有一個,根節點可存放的索引數據大約為 16*1000/(8+6) 約等於 1140 個索引值,1140個索引值中,相鄰間隔的索引具有指向下一個節點的指針

    因此,下一層深度的B+樹可存放的數據量約為1140*1140=130萬,葉子節點每個節點數據頁為16K,已每行數據占用1K來計算(1K是估算值),每個葉子節點可以存放16行數據

    因此

    bigint類型字段作為做為主鍵索引,一顆深度為3的B+樹能存放大概1140*1140*16=2000萬的數據

         

 

 

  


免責聲明!

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



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