<source id="wfbuo"><optgroup id="wfbuo"></optgroup></source>
<rt id="wfbuo"></rt><strong id="wfbuo"></strong>
<rt id="wfbuo"><optgroup id="wfbuo"></optgroup></rt>
<rt id="wfbuo"></rt>

  • <strong id="wfbuo"></strong>

    <menuitem id="wfbuo"></menuitem>
  • <strong id="wfbuo"></strong>
  • 當前位置 博文首頁 > 程序員養成日記:mysql一張表到底能存多少數據?

      程序員養成日記:mysql一張表到底能存多少數據?

      作者:程序員養成日記 時間:2021-02-20 16:33

      前言

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

      知識準備

      數據頁

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

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

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

      索引結構(innodb)

      mysql的索引結構咱們應該都知道,是如下的b+樹結構 通常b+樹非葉子節點不存儲數據,只有葉子節點(最下面一層)才存儲數據,那么咱們說回節點,一個節點指的是(對于上圖而言)

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

      具體計算方法

      根節點計算

      首先咱們只看根節點

      比如我們設置的數據類型是bigint,大小為8b 在數據本身如今還有一小塊空間,用來存儲下一層索引數據頁的地址,大小為6kb

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

      其余層節點計算

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

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

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

      總結

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

      bk
    推土機2019:ImageCombiner - Java服務端圖片合成工具,好用! 萊布尼茨:【從零開始擼一個App】Fragment和導航中的使用 等不到的口琴:億級流量架構之資源隔離思路與方法 TOP生物信息:一文學會常規轉錄組分析 Twittytop:我的2020之路 我愛睡蓮:keepalived-1.3.5+MHA部署mysql集群 程序員養成日記:mysql一張表到底能存多少數據? 等你歸去來:java線程池趣味事:這不是線程池 Linyiwei:C++算法代碼――Tuna Linux中執行shell腳本的4種方法總結 關于ios配置微信config出現驗簽失敗的問題解決 ASP.NET Core擴展庫之Http通用擴展庫的使用詳解 Java在Excel中添加水印的實現(單一水印、平鋪水印) 基于UDP協議實現聊天系統 R語言中ifelse、which、%in%的用法詳解 constant,Java中定義常量(Constant)的幾種方法 float,CSS Float(浮動),CSS Float(浮動)用法 fixed,JavaScript fixed() 方法,JavaScript fixed() 實例 sprintf,sprintf 函數用法詳細注解 html代碼 php網站,php網站搭建步驟,PHP環境搭建教程 調試js,JS調試,js調試工具 xml是什么.xml格式文件,xml怎么用 jsswitch語句,JavaScript Switch 語句,JavaScript Switch用法 html5 教程,什么是 HTML5,HTML5都有什么功能 css,通過JS修改CSS樣式 網站建設哪,什么是網站建設?網站建設的常見要素有哪些? html網站,前端html網站的發布過程 document.cookie,使用document對象操作cookie javascript 數組,JavaScript數組去掉重復數據總結
    欧美日韩免费无码