這篇“MySQL一張表能存的數(shù)據(jù)是多少”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“MySQL一張表能存的數(shù)據(jù)是多少”文章吧。
目前創(chuàng)新互聯(lián)已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、網(wǎng)站托管運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、臨翔網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
在操作系統(tǒng)中,我們知道為了跟磁盤交互,內(nèi)存也是分頁(yè)的,一頁(yè)大小4KB。同樣的在MySQL中為了提高吞吐率,數(shù)據(jù)也是分頁(yè)的,不過(guò)MySQL的數(shù)據(jù)頁(yè)大小是16KB。(確切的說(shuō)是InnoDB數(shù)據(jù)頁(yè)大小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)
今天咱們數(shù)據(jù)頁(yè)的具體結(jié)構(gòu)指針等不深究,知道它默認(rèn)是16kb就行了,也就是說(shuō)一個(gè)節(jié)點(diǎn)的數(shù)據(jù)大小是16kb
mysql的索引結(jié)構(gòu)咱們應(yīng)該都知道,是如下的b+樹(shù)結(jié)構(gòu)
通常b+樹(shù)非葉子節(jié)點(diǎn)不存儲(chǔ)數(shù)據(jù),只有葉子節(jié)點(diǎn)(最下面一層)才存儲(chǔ)數(shù)據(jù),那么咱們說(shuō)回節(jié)點(diǎn),一個(gè)節(jié)點(diǎn)指的是(對(duì)于上圖而言)
每個(gè)紅框選中的部分稱為一個(gè)節(jié)點(diǎn),而不是說(shuō)某個(gè)元素。了解了節(jié)點(diǎn)的概念和每個(gè)節(jié)點(diǎn)的大小為16kb之后,咱們計(jì)算mysql能存儲(chǔ)多少數(shù)據(jù)就容易很多了
首先咱們只看根節(jié)點(diǎn)
比如我們?cè)O(shè)置的數(shù)據(jù)類型是bigint,大小為8b
在數(shù)據(jù)本身如今還有一小塊空間,用來(lái)存儲(chǔ)下一層索引數(shù)據(jù)頁(yè)的地址,大小為6kb
所以我們是可以計(jì)算出來(lái)一個(gè)數(shù)據(jù)為(8b+6b=14b)的空間(以bigint為例) 我們剛剛說(shuō)到一個(gè)數(shù)據(jù)頁(yè)的大小是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ì)算出來(lái)了,那么接下來(lái)的就容易了。
第二層其實(shí)比較容易,因?yàn)槊總€(gè)節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)和跟節(jié)點(diǎn)一樣,而且在跟節(jié)點(diǎn)每個(gè)元素都會(huì)延伸出來(lái)一個(gè)節(jié)點(diǎn),所以第二層的數(shù)據(jù)量是1170*1170=1368900,問(wèn)題在于第三層,因?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 (千萬(wàn)級(jí)條)
其實(shí)計(jì)算結(jié)果與我們平時(shí)的工作經(jīng)驗(yàn)也是相符的,一般mysql一張表的數(shù)據(jù)超過(guò)了千萬(wàn)也是得進(jìn)行分表操作了。
以上就是關(guān)于“MySQL一張表能存的數(shù)據(jù)是多少”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
標(biāo)題名稱:MySQL一張表能存的數(shù)據(jù)是多少
本文網(wǎng)址:http://m.2m8n56k.cn/article22/giocjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、微信公眾號(hào)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站制作、小程序開(kāi)發(fā)、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)