2013-07-13 129 views
4

什麼是估計數據庫將多大具有以下特點的最準確的方法:數據庫大小計算?

  • MySQL的
  • 1有三列表:
    • ID - >大INT)
    • FIELD1 - > VARCHAR 32
    • FIELD2 - >炭32
  • 有一個索引on field2

您可以假定varchar 32已完全填充(全部32個字符)。它有多大是,如果每個字段是填充,主要有:

  1. 1萬行
  2. 5萬行
  3. 1億行
  4. 5億行

我粗略估計計算出:ID爲1個字節,其他兩個字段各32個位。使得它大致爲:

1 + 32 + 32 = 65 * 1 000 000 = 65 million bytes for 1 million rows 
= 62 Megabyte 

因此:

  1. 62 MB
  2. 310 MB
  3. 310 000 MB = + - 302Gb
  4. 1 550 000 MB = 1513千兆

這是一個準確的估計?

+0

http://stackoverflow.com/questions/7325090/mysql-database-size-estimation – goat

+0

檢查了這一點:http://lists.mysql.com/mysql/217296。據此,數據庫大小並不完全依賴於它的錶行 –

回答

17

如果你想知道一個數據庫當前的大小,你可以試試這個:

SELECT table_schema "Database Name" 
    , SUM(data_length + index_length)/(1024 * 1024) "Database Size in MB" 
FROM information_schema.TABLES 
GROUP BY table_schema 
+0

有用的答案,如果我想檢查數據庫中的表的大小? – kaulmonish

+0

你的意思是,一張桌子?我想你可以在查詢中添加一個合適的WHERE子句。 –

7

我粗略估計工程以:1個字節的ID,每個32位的其他兩個領域。

你是方式 off。請參閱MySQL Data Type Storage Requirements文檔。特別是:

  • 一個BIGINT是8個字節,而不是1

  • 將取決於你的數據庫中使用的字符集所需的CHARVARCHAR列存儲,但會(!)至少爲32個字節(不是比特!)對於CHAR(32)和33對於VARCHAR(32)

  • 您完全沒有考慮到索引的大小。這個大小取決於數據庫引擎,但絕對不是零。有關更多信息,請參閱InnoDB row structure上的文檔。