2011-09-06 94 views
6

我有一個應用程序數據庫,其中包含一個用戶表(基於計數字段* typelength的每個用戶1kbyte數據)和大約100個屬於用戶的相同大小的事務(每個事務0.5 KB),它位於「用戶」表和「事物」表中。MySQL數據庫大小估計

這似乎導致每個用戶約51k字節的數據。不過,我聽說對於MySQL,我應該將它加倍以覆蓋索引表,這會讓我達到102kbytes/user這是真的嗎?是否有任何其他數據擴展因素需要考慮MySQL,或者是102kbytes的好估計?

除了索引因子(我認爲是2)和存儲效率(我也認爲是2)之外,還有其他的MySQL數據存儲乘法器嗎?

+0

您使用的是哪種數據庫引擎?你想要實際的數字還是估計?您可以使用TABLE STATUS以字節爲單位獲取每個表的實際大小。你可以從中推斷出來,並得到實際的數字估計值。 –

+0

我正在使用innodb進行存儲。 –

+0

http://dev.mysql.com/doc/refman/5.0/en/innodb-disk-management.html在某種程度上討論了InnoDB磁盤利用率,但是如果不知道您的目的,我不確定如何最好地計算或估計磁盤使用情況。 –

回答

2

簡短回答
大小增加2-3倍於MyISAM是常見的,4倍是罕見的。

一切有關InnoDB引擎:
http://dev.mysql.com/doc/refman/5.1/en/innodb-storage-engine.html

的InnoDB,MyISAM和磁盤空間:
http://mysqlha.blogspot.com/2009/01/innodb-myisam-and-disk-space_16.html

MySQL的發動機空間的使用率比較:
第1部分:http://marksverbiage.blogspot.com/2008/02/mysql-engines-and-space-usage.html
第2部分:http://marksverbiage.blogspot.com/2008/04/mysql-engines-space-usage-comparison.html

這裏是物理行結構:
http://dev.mysql.com/doc/refman/5.0/en/innodb-physical-record.html

有很多的變數和問題:

  • 指標,記住InnoDB的包括在每個二級指標的PK。
  • 你打包的鑰匙(慢)?
  • 表是多餘的嗎?
  • 不要忘記日誌(二進制日誌,慢查詢日誌,錯誤日誌....)
  • 行被聲明爲可爲空,如果是這樣,每行添加一個額外的字節每個可空列。
  • 你使用什麼字符集?