欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

面試提問mysql一張表到底能存多少數(shù)據(jù)

 更新時(shí)間:2022年03月11日 09:15:30   作者:Q.E.D  
這篇文章主要為大家介紹了面試提問mysql一張表到底能存多少數(shù)據(jù)的問題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

前言

程序員平時(shí)和mysql打交道一定不少,可以說每天都有接觸到,但是mysql一張表到底能存多少數(shù)據(jù)呢?計(jì)算根據(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)

今天咱們數(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)

圖片

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

圖片

每個(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

圖片

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

圖片

所以我們是可以計(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 (千萬級(jí)條)

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

3、總結(jié)

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

以上就是面試提問mysql一張表到底能存多少數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于mysql一張表能存多少數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySQL 8.0.19安裝詳細(xì)教程(windows 64位)

    MySQL 8.0.19安裝詳細(xì)教程(windows 64位)

    這篇文章主要介紹了MySQL 8.0.19安裝詳細(xì)教程(windows 64位),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • MYSQL 隨機(jī) 抽取實(shí)現(xiàn)方法及效率分析

    MYSQL 隨機(jī) 抽取實(shí)現(xiàn)方法及效率分析

    MYSQL的隨機(jī)抽取實(shí)現(xiàn)方法。舉個(gè)例子,要從tablename表中隨機(jī)提取一條記錄,大家一般的寫法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。
    2009-05-05
  • mysql-5.5.28源碼安裝過程中錯(cuò)誤總結(jié)

    mysql-5.5.28源碼安裝過程中錯(cuò)誤總結(jié)

    介紹一下關(guān)于mysql-5.5.28源碼安裝過程中幾大錯(cuò)誤總結(jié),希望此文章對(duì)各位同學(xué)有所幫助。
    2013-10-10
  • MySQL中LIKE子句相關(guān)使用的學(xué)習(xí)教程

    MySQL中LIKE子句相關(guān)使用的學(xué)習(xí)教程

    這篇文章主要介紹了MySQL中LIKE子句相關(guān)使用的學(xué)習(xí)教程,LIKE子句一般用于WHERE語句中,需要的朋友可以參考下
    2015-12-12
  • mysql共享鎖與排他鎖用法實(shí)例分析

    mysql共享鎖與排他鎖用法實(shí)例分析

    這篇文章主要介紹了mysql共享鎖與排他鎖用法,結(jié)合實(shí)例形式分析了mysql共享鎖與排他鎖相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-09-09
  • mysql數(shù)據(jù)庫導(dǎo)出xml的實(shí)現(xiàn)方法

    mysql數(shù)據(jù)庫導(dǎo)出xml的實(shí)現(xiàn)方法

    因?yàn)橛腥藛柕饺绾螌ysql數(shù)據(jù)庫導(dǎo)出為xml文件,所以發(fā)現(xiàn)了這篇文章
    2008-09-09
  • 簡單實(shí)現(xiàn)SQLServer轉(zhuǎn)MYSQL的方法

    簡單實(shí)現(xiàn)SQLServer轉(zhuǎn)MYSQL的方法

    SqlServer數(shù)據(jù)轉(zhuǎn)換成mysql數(shù)據(jù),可以說是一個(gè)老生常談了,網(wǎng)上也有很多的方法,今天我們來看一種不一樣的方法,而且也非常的簡單,雖然有點(diǎn)小缺陷,但還是不失為一種很好的方法,當(dāng)然如果結(jié)合mss2sql那就非常完美了
    2014-08-08
  • mysql 常用命令集錦[絕對(duì)精華]

    mysql 常用命令集錦[絕對(duì)精華]

    測試環(huán)境:mysql 5.0.45 【注:可以在mysql中通過mysql> SELECT VERSION();來查看數(shù)據(jù)庫版本】
    2009-06-06
  • mysql 中文亂碼 解決方法集錦

    mysql 中文亂碼 解決方法集錦

    主要是針對(duì) 1.4x版本的一些亂碼問題,其實(shí)新版本中錯(cuò)誤也差不多,大家注意下編碼問題。
    2009-06-06
  • 淺談MySQL之淺入深出頁原理

    淺談MySQL之淺入深出頁原理

    首先,我們需要知道,頁(Pages)是InnoDB中管理數(shù)據(jù)的最小單元。Buffer Pool中存的就是一頁一頁的數(shù)據(jù)。當(dāng)我們要查詢的數(shù)據(jù)不在Buffer Pool中時(shí),InnoDB會(huì)將記錄所在的頁整個(gè)加載到Buffer Pool中去;同樣,將Buffer Pool中的臟頁刷入磁盤時(shí),也是按照頁為單位刷入磁盤的
    2021-06-06

最新評(píng)論