濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 淺談mysql一張表到底能存多少數(shù)據(jù)

淺談mysql一張表到底能存多少數(shù)據(jù)

熱門(mén)標(biāo)簽:怎樣在地圖標(biāo)注銷(xiāo)售區(qū)域 地圖標(biāo)注費(fèi)用是多少 啥是企業(yè)400電話辦理 外呼系統(tǒng)打電話上限是多少 曲靖移動(dòng)外呼系統(tǒng)公司 電話外呼系統(tǒng)改號(hào) 武漢網(wǎng)絡(luò)外呼系統(tǒng)服務(wù)商 南昌三維地圖標(biāo)注 百應(yīng)電話機(jī)器人優(yōu)勢(shì)

程序員平時(shí)和mysql打交道一定不少,可以說(shuō)每天都有接觸到,但是mysql一張表到底能存多少數(shù)據(jù)呢?計(jì)算根據(jù)是什么呢?接下來(lái)咱們逐一探討

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

數(shù)據(jù)頁(yè)

在操作系統(tǒng)中,我們知道為了跟磁盤(pán)交互,內(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)我們可以用如下命令查詢(xún)到。

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

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

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

具體計(jì)算方法

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

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

比如我們?cè)O(shè)置的數(shù)據(jù)類(lèi)型是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,也就是(161024)b,那么根節(jié)點(diǎn)是可以存儲(chǔ)(161024/(8+6))個(gè)數(shù)據(jù)的,結(jié)果大概是1170個(gè)數(shù)據(jù)如果跟節(jié)點(diǎn)的計(jì)算方法計(jì)算出來(lái)了,那么接下來(lái)的就容易了。

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

第二層其實(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)行分表操作了。

總結(jié)

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

到此這篇關(guān)于淺談mysql一張表到底能存多少數(shù)據(jù)的文章就介紹到這了,更多相關(guān)mysql表存多少數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 使用pymysql查詢(xún)數(shù)據(jù)庫(kù),把結(jié)果保存為列表并獲取指定元素下標(biāo)實(shí)例
  • mysql創(chuàng)建存儲(chǔ)過(guò)程實(shí)現(xiàn)往數(shù)據(jù)表中新增字段的方法分析
  • Django使用Mysql數(shù)據(jù)庫(kù)已經(jīng)存在的數(shù)據(jù)表方法
  • MySQL修改數(shù)據(jù)表存儲(chǔ)引擎的3種方法介紹
  • MySQL動(dòng)態(tài)創(chuàng)建表,數(shù)據(jù)分表的存儲(chǔ)過(guò)程

標(biāo)簽:甘南 錦州 資陽(yáng) 隨州 黑河 荊州 滄州 吉林

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺談mysql一張表到底能存多少數(shù)據(jù)》,本文關(guān)鍵詞  淺談,mysql,一張,表,到底,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺談mysql一張表到底能存多少數(shù)據(jù)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于淺談mysql一張表到底能存多少數(shù)據(jù)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    杂多县| 措美县| 常州市| 潜山县| 九江市| 嘉祥县| 虞城县| 家居| 平南县| 晋中市| 托里县| 德安县| 玛多县| 南陵县| 翁源县| 宾川县| 时尚| 建瓯市| 曲水县| 西藏| 青铜峡市| 赞皇县| 定州市| 棋牌| 景东| 历史| 稻城县| 当涂县| 宕昌县| 娄底市| 通许县| 繁昌县| 定结县| 乡城县| 高要市| 玉屏| 德兴市| 武鸣县| 平远县| 五华县| 安龙县|