mysql一張表到底能存多少資料?

2021-10-19 13:32:05 字數 1399 閱讀 2155

程式設計師平時和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

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

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

首先咱們只看根節點

比如我們設定的資料型別是bigint,大小為8b

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

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

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

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

MySQL一張表最多能存多少條記錄?

vagrant 1月7日提問 問題對人有幫助,內容完整,我也想知道答案 0問題沒有實際價值,缺少關鍵內容,沒有改進餘地 myisam 引擎,一張表最多能存多少條記錄,在什麼樣的資料規模下會考慮分表?預設排序 時間排序 答案對人有幫助,有參考價值 2答案沒幫助,是錯誤的答案,答非所問 已採納 見官方文...

mysql有多大記憶體?能存多少資料?

mysql mysql 3.22 限制的表大小為4gb。myisam 儲存引擎 最大表尺寸增加到了65536tb 2567 1位元組 由於允許的表尺寸更大,mysql資料庫的最大有效表尺寸通常是由作業系統對檔案大小的限制決定的,而不是由mysql內部限制決定的。innodb 儲存引擎 innodb ...

MySQL中update一張表到另一張表

以下的文章主要介紹的是mysql 資料庫中如何將乙個實際應用表的相關資料插入到另外乙個表的實際操作方法,此方案看起來很簡單但是並非如此,雖然這個實現起來非常簡單,但是還是會困擾許多新手,因此專門發一篇文章備查。開發中,我們經常需要將乙個表的資料插入到另外乙個表,有時還需要指定匯入字段,雖然這個實現起...