innodb中一顆B+樹能存儲多少條數據


如圖,為B+樹組織數據的方式:

實際存儲時當然不會每個節點只存3條數據。

以InnoDB引擎為例,簡單計算一下一顆B+樹可以存放多少行數據。

B+樹特點:只有葉子節點存儲數據,而非葉子節點存放的是用來找到葉子節點數據的索引(如上圖:key和指針)

InnoDB存儲引擎的最小存儲單元為16k(就像操作系統的最小單元為4k 即1頁),在這即B+樹的一個節點的大小為16k 

假設數據庫一條數據的大小為1k,則一個節點可以存儲16條數據

而非葉子節點,key一般為主鍵假設8字節,指針在InnoDB中是6字節,一共為14字節,一個節點可以存儲 16384/14 = 1170個索引指針

 

可以算出一顆高度為2的樹(即根節點為存儲索引指針節點,還有1170個葉子節點存儲數據),每個節點可以存儲16條數據,一共1170*16條數據  = 18720條

高度為3的樹,可以存放 1170 * 1170 * 16 = 21902400條記錄

兩千多萬條數據,我們只需要B+樹為3層的數據結構就可以完成,通過主鍵查詢只需要3次IO操作就能查到對應記錄。


免責聲明!

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



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