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

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

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

前言

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

1、知識準備

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

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

mysql> SHOW GLOBAL STATUS LIKE 'innodb_page_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| Innodb_page_size | 16384 |
+------------------+-------+
1 row in set (0.00 sec)

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

1.2、索引結構(innodb)

mysql的索引結構咱們應該都知道,是如下的b+樹結構

圖片

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

圖片

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

2、具體計算方法

2.1、根節(jié)點計算

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

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

圖片

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

圖片

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

2.2、其余層節(jié)點計算

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

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

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

3、總結

最后用一張圖片總結一下今天討論的內容,希望您能喜歡

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

相關文章

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

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

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

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

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

    mysql-5.5.28源碼安裝過程中錯誤總結

    介紹一下關于mysql-5.5.28源碼安裝過程中幾大錯誤總結,希望此文章對各位同學有所幫助。
    2013-10-10
  • MySQL中LIKE子句相關使用的學習教程

    MySQL中LIKE子句相關使用的學習教程

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

    mysql共享鎖與排他鎖用法實例分析

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

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

    因為有人問到如何將mysql數(shù)據(jù)庫導出為xml文件,所以發(fā)現(xiàn)了這篇文章
    2008-09-09
  • 簡單實現(xiàn)SQLServer轉MYSQL的方法

    簡單實現(xiàn)SQLServer轉MYSQL的方法

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

    mysql 常用命令集錦[絕對精華]

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

    mysql 中文亂碼 解決方法集錦

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

    淺談MySQL之淺入深出頁原理

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

最新評論