站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        MySQL一張表到底能存多少數(shù)據(jù)?

        本篇文章給大家?guī)砹岁P(guān)于mysql的相關(guān)知識(shí),程序員平時(shí)和mysql打交道一定不少,可以說每天都有接觸到,但是mysql一張表到底能存多少數(shù)據(jù)呢?計(jì)算根據(jù)是什么呢?下面一起來探討一下,希望對大家有幫助。

        MySQL一張表到底能存多少數(shù)據(jù)?

        1、知識(shí)準(zhǔn)備

        1.1、數(shù)據(jù)頁

        在操作系統(tǒng)中,我們知道為了跟磁盤交互,內(nèi)存也是分頁的,一頁大小4KB。同樣的在MySQL中為了提高吞吐率,數(shù)據(jù)也是分頁的,不過MySQL的數(shù)據(jù)頁大小是16KB。(確切的說是InnoDB數(shù)據(jù)頁大小16KB)。詳細(xì)學(xué)習(xí)可以參考官網(wǎng) 我們可以用如下命令查詢到。

        mysql> SHOW GLOBAL STATUS LIKE 'innodb_page_size'; +------------------+-------+ | Variable_name    | Value | +------------------+-------+ | Innodb_page_size | 16384 | +------------------+-------+ 1 row in set (0.00 sec)
        登錄后復(fù)制

        今天咱們數(shù)據(jù)頁的具體結(jié)構(gòu)指針等不深究,知道它默認(rèn)是16kb就行了,也就是說一個(gè)節(jié)點(diǎn)的數(shù)據(jù)大小是16kb

        1.2、索引結(jié)構(gòu)(innodb)

        mysql的索引結(jié)構(gòu)咱們應(yīng)該都知道,是如下的b+樹結(jié)構(gòu)

        MySQL一張表到底能存多少數(shù)據(jù)?

        通常b+樹非葉子節(jié)點(diǎn)不存儲(chǔ)數(shù)據(jù),只有葉子節(jié)點(diǎn)(最下面一層)才存儲(chǔ)數(shù)據(jù),那么咱們說回節(jié)點(diǎn),一個(gè)節(jié)點(diǎn)指的是(對于上圖而言)

        MySQL一張表到底能存多少數(shù)據(jù)?

        每個(gè)紅框選中的部分稱為一個(gè)節(jié)點(diǎn),而不是說某個(gè)元素。了解了節(jié)點(diǎn)的概念和每個(gè)節(jié)點(diǎn)的大小為16kb之后,咱們計(jì)算mysql能存儲(chǔ)多少數(shù)據(jù)就容易很多了

        2、具體計(jì)算方法

        2.1、根節(jié)點(diǎn)計(jì)算

        首先咱們只看根節(jié)點(diǎn)

        比如我們設(shè)置的數(shù)據(jù)類型是bigint,大小為8b

        MySQL一張表到底能存多少數(shù)據(jù)?

        在數(shù)據(jù)本身如今還有一小塊空間,用來存儲(chǔ)下一層索引數(shù)據(jù)頁的地址,大小為6kb

        MySQL一張表到底能存多少數(shù)據(jù)?

        所以我們是可以計(jì)算出來一個(gè)數(shù)據(jù)為(8b+6b=14b)的空間(以bigint為例) 我們剛剛說到一個(gè)數(shù)據(jù)頁的大小是16kb,也就是(16*1024)b,那么根節(jié)點(diǎn)是可以存儲(chǔ)(16*1024/(8+6))個(gè)數(shù)據(jù)的,結(jié)果大概是1170個(gè)數(shù)據(jù) 如果跟節(jié)點(diǎn)的計(jì)算方法計(jì)算出來了,那么接下來的就容易了。

        2.2、其余層節(jié)點(diǎn)計(jì)算

        第二層其實(shí)比較容易,因?yàn)槊總€(gè)節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)和跟節(jié)點(diǎn)一樣,而且在跟節(jié)點(diǎn)每個(gè)元素都會(huì)延伸出來一個(gè)節(jié)點(diǎn),所以第二層的數(shù)據(jù)量是1170*1170=1368900,問題在于第三層,因?yàn)閕nnodb的葉子節(jié)點(diǎn),是直接包含整條mysql數(shù)據(jù)的,如果字段非常多的話數(shù)據(jù)所占空間是不小的,我們這里以1kb計(jì)算,所以在第三層,每個(gè)節(jié)點(diǎn)為16kb,那么每個(gè)節(jié)點(diǎn)是可以放16個(gè)數(shù)據(jù)的,所以最終mysql可以存儲(chǔ)的總數(shù)據(jù)為

        1170 * 1170 * 16 = 21902400 (千萬級條)

        其實(shí)計(jì)算結(jié)果與我們平時(shí)的工作經(jīng)驗(yàn)也是相符的,一般mysql一張表的數(shù)據(jù)超過了千萬也是得進(jìn)行分表操作了。

        3、總結(jié)

        最后用一張圖片總結(jié)一下今天討論的內(nèi)容,希望您能喜歡

        MySQL一張表到底能存多少數(shù)據(jù)?

        推薦學(xué)習(xí):mysql視頻教程

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 国产精品怡红院永久免费| 国产福利电影一区二区三区,亚洲国模精品一区| 精品永久久福利一区二区| 国产成人精品午夜福麻豆| 精品视频一区二区三三区四区| 久久99精品久久久久久野外| 国产亚洲欧洲精品| 久久精品国产亚洲精品2020| 欧美精品亚洲人成在线观看| 真实国产乱子伦精品免费| 久久99精品久久久久久动态图| 男女男精品网站免费观看| 成人午夜精品亚洲日韩| 国产精品成人不卡在线观看| 日韩精品久久久肉伦网站| 四虎国产精品永久在线看| 国产精品一香蕉国产线看观看| 69久久精品无码一区二区| 麻豆亚洲AV永久无码精品久久| 亚洲精品国产福利一二区| 国产高清在线精品一本大道| 久久精品国产精品青草| 55夜色66夜色国产精品视频| 永久免费精品影视网站| 亚洲国产精品碰碰| 无码精品人妻一区二区三区影院| 国内精品久久久久久久涩爱| 国产成人精品cao在线| 久久精品国产91久久综合麻豆自制| 国产办公室秘书无码精品99| 久久久无码精品亚洲日韩按摩 | 亚洲国产精品无码久久| 人妻偷人精品成人AV| 久久亚洲国产精品五月天婷| 国产在AJ精品| 九九精品在线视频| 精品视频一区二区三区四区五区| 国产精品永久久久久久久久久| 国产精品高清2021在线| 国产精品亚洲产品一区二区三区 | 国产精品免费观看视频|