推薦鏈接:
????總結(jié)——》【Java】
????總結(jié)——》【Mysql】
????總結(jié)——》【Redis】
????總結(jié)——》【Kafka】
????總結(jié)——》【Spring】
????總結(jié)——》【SpringBoot】
????總結(jié)——》【MyBatis、MyBatis-Plus】
存儲(chǔ)數(shù)據(jù)的位置 | 最小存儲(chǔ)單元 | 備注 |
---|---|---|
計(jì)算機(jī)磁盤 | 扇區(qū) = 512字節(jié) | |
文件系統(tǒng)(XFS/EXT4) | 塊 = 4k | |
InnoDB 存儲(chǔ)引擎 | 頁 = 16k | 后綴為 ibd 文件大小始終為16384(16k)的整數(shù)倍 |
數(shù)據(jù)表中的數(shù)據(jù)都是存儲(chǔ)在頁中的。
葉子節(jié)點(diǎn) :存放數(shù)據(jù)
非葉子節(jié)點(diǎn) :存放的是索引信息和下一層節(jié)點(diǎn)的指針信息
1、一個(gè)頁中能存儲(chǔ)多少行數(shù)據(jù)呢?
Q:一個(gè)頁中能存儲(chǔ)多少行數(shù)據(jù)呢?
A:假設(shè)一行數(shù)據(jù)的大小是 1k,那么一個(gè)頁可以存放 16 行這樣的數(shù)據(jù)。
2、一個(gè)非葉子節(jié)點(diǎn)能存儲(chǔ)多少指針?
Q:一個(gè)非葉子節(jié)點(diǎn)能存儲(chǔ)多少指針?
A:假設(shè)主鍵 ID 為 常用的bigint 類型,長度為 8 字節(jié)
指針大小在 InnoDB 源碼中設(shè)置為 6 字節(jié)
這樣一共 14 字節(jié),一頁有16384字節(jié),所以能存放16384/14=1170個(gè)指針
3、一棵高度為2的B+樹,能存放多少記錄?
Q:一棵高度為2的B+樹,能存放多少記錄?
A:一個(gè)根節(jié)點(diǎn) = 一個(gè)非葉子節(jié)點(diǎn) = 1170個(gè)指針
一個(gè)葉子節(jié)點(diǎn) = 16行數(shù)據(jù)
所以一共1170 * 16 = 18720
3、一棵高度為3的B+樹,能存放多少記錄?
A:一棵高度為3的B+樹,能存放多少記錄?
A:1170 * 1170 * 16=21902400
在 InnoDB 中 B+ 樹高度一般為 1-3 層,就能滿足千萬級(jí)的數(shù)據(jù)存儲(chǔ)。文章來源:http://www.zghlxwxcb.cn/news/detail-420589.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-420589.html
到了這里,關(guān)于Mysql——》一棵B+樹可以存放多少行數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!