InnoDB 一棵 B+ 樹可以存放多少行數據

參考:https://mp.weixin.qq.com/s/BWlkrHiB-uP6fDnsxtKU0Q
問:一棵B+數可以存放多少行數據。
這個就得因地制宜了。首先,InnoDB底層的數據頁大小默認為16KB,一般來說,生產環境一行數據為1KB左右,那么一個數據頁可以存放16條數據。剩下的只要計算有多少個數據頁就行了。
InnoDB的一個頁可以為索引頁,也可以為數據頁。數據頁上文已分析。對于索引頁,里面數據是怎么存放的呢?索引頁存放的是主鍵和指針(6 Byte),若建表時沒有指定主鍵,mysql會自動創建一個6Byte的主鍵。一般數據庫中我們使用bigint的自增id作為主鍵(8Byte),那么一個<主鍵,指針>對大小為14Byte。一個16KB的索引頁可以存放161024/14=1170個單元。
一般樹高為3層,那么對應的數據頁有1170
1170個,數據行數為1170117016=2000W行。

同時B+樹相對于B樹的優點在于,B+樹只在葉子節點存放數據,那非葉子節點的出度就高了,樹會矮胖,而B樹會瘦高,自然查詢同樣的數據B+樹的IO次數更少。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容