如圖,為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操作就能查到對應記錄。
