久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL一張表能存的數據是多少

133次閱讀
沒有評論

共計 1288 個字符,預計需要花費 4 分鐘才能閱讀完成。

這篇“MySQL 一張表能存的數據是多少”文章的知識點大部分人都不太理解,所以丸趣 TV 小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“MySQL 一張表能存的數據是多少”文章吧。

1、知識準備 1.1、數據頁

在操作系統中,我們知道為了跟磁盤交互,內存也是分頁的,一頁大小 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

1.2、索引結構(innodb)

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

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

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

2、具體計算方法 2.1、根節點計算

首先咱們只看根節點

比如我們設置的數據類型是 bigint,大小為 8b

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

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

2.2、其余層節點計算

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

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

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

以上就是關于“MySQL 一張表能存的數據是多少”這篇文章的內容,相信大家都有了一定的了解,希望丸趣 TV 小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-13發表,共計1288字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 临武县| 龙门县| 沅陵县| 惠安县| 鄂州市| 高尔夫| 宝丰县| 隆德县| 北辰区| 临夏县| 白水县| 双流县| 商水县| 浦县| 宝山区| 莱芜市| 大埔区| 平舆县| 天水市| 延安市| 平陆县| 大厂| 龙游县| 靖边县| 怀远县| 佛山市| 井研县| 南城县| 湟源县| 灌云县| 来宾市| 布尔津县| 珲春市| 长丰县| 毕节市| 东兴市| 防城港市| 古浪县| 内黄县| 福建省| 山西省|