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

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

實際存儲時固然不會每一個節點只存3條數據。數據結構

以InnoDB引擎爲例,簡單計算一下一顆B+樹能夠存放多少行數據。操作系統

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

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

假設數據庫一條數據的大小爲1k,則一個節點能夠存儲16條數據索引

而非葉子節點,key通常爲主鍵假設8字節,指針在InnoDB中是6字節,一共爲14字節,一個節點能夠存儲 16384/14 = 1170個索引指針im

 

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

高度爲3的樹,能夠存放 1170 * 1170 * 16 = 21902400條記錄查詢

兩千多萬條數據,咱們只須要B+樹爲3層的數據結構就能夠完成,經過主鍵查詢只須要3次IO操做就能查到對應記錄。img

相關文章
相關標籤/搜索