好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 淺談mysql一張表到底能存多少數據

淺談mysql一張表到底能存多少數據

熱門標簽:怎樣在地圖標注銷售區域 地圖標注費用是多少 啥是企業400電話辦理 外呼系統打電話上限是多少 曲靖移動外呼系統公司 電話外呼系統改號 武漢網絡外呼系統服務商 南昌三維地圖標注 百應電話機器人優勢

程序員平時和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一張表的數據超過了千萬也是得進行分表操作了。

總結

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

到此這篇關于淺談mysql一張表到底能存多少數據的文章就介紹到這了,更多相關mysql表存多少數據內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 使用pymysql查詢數據庫,把結果保存為列表并獲取指定元素下標實例
  • mysql創建存儲過程實現往數據表中新增字段的方法分析
  • Django使用Mysql數據庫已經存在的數據表方法
  • MySQL修改數據表存儲引擎的3種方法介紹
  • MySQL動態創建表,數據分表的存儲過程

標簽:甘南 錦州 資陽 隨州 黑河 荊州 滄州 吉林

巨人網絡通訊聲明:本文標題《淺談mysql一張表到底能存多少數據》,本文關鍵詞  淺談,mysql,一張,表,到底,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談mysql一張表到底能存多少數據》相關的同類信息!
  • 本頁收集關于淺談mysql一張表到底能存多少數據的相關信息資訊供網民參考!
  • 推薦文章