如圖,爲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