在innodb存儲(chǔ)引擎里面偶惠,最小的存儲(chǔ)單元是頁(page)春寿,一個(gè)頁的大小是16Kb『瞿酰可用如下命令查看:
SHOW VARIABLES LIKE 'innodb_page_size'
image.png
這就說明了一個(gè)頁的大小為16384b绑改,也就是16kb。
image.png
如果是3層的B+樹兄一,即存在一個(gè)根節(jié)點(diǎn)厘线、若干個(gè)中間節(jié)點(diǎn)、若干個(gè)葉子節(jié)點(diǎn)出革,那么這棵B+樹的存放總記錄數(shù)為:根節(jié)點(diǎn)指針數(shù) x 中間節(jié)點(diǎn)數(shù) x 單個(gè)葉子節(jié)點(diǎn)記錄行數(shù)造壮。因?yàn)閱蝹€(gè)頁的大小為16kb,而一行數(shù)據(jù)的大小為1kb骂束,也就是說一頁可以存放16行數(shù)據(jù)耳璧。然后因?yàn)榉侨~子節(jié)點(diǎn)的結(jié)構(gòu)是:“頁指針+鍵值”,我們假設(shè)主鍵ID為int類型展箱,長度為11字節(jié)(byte)旨枯,而指針大小在InnoDB源碼中設(shè)置為6字節(jié)(byte),這樣一共17字節(jié)(byte)混驰,因?yàn)橐粋€(gè)頁可以存放16384byte攀隔,所以一個(gè)頁可以存放的指針個(gè)數(shù)為16384/17=963個(gè)皂贩。因此一個(gè)3層的B+樹可以存放的數(shù)據(jù)行的個(gè)數(shù)為:963 x 963 x 16=14849000(行)。也就是說一個(gè)三層的B+樹就可以存放千萬級(jí)別的數(shù)據(jù)了昆汹。