9

估计具有以下特征的数据库大小的最准确方法是什么:

  • MySQL
  • 1 个包含三列的表:
    • id --> 大整数)
    • 字段 1 --> varchar 32
    • 字段 2 --> 字符 32
  • field2 上有一个索引

您可以假设 varchar 32 已完全填充(全部 32 个字符)。如果每个字段都被填充并且有:

  1. 100 万行
  2. 500 万行
  3. 10 亿行
  4. 50 亿行

我的粗略估计是:id 1 个字节,其他两个字段各 32 位。大致制作:

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

所以:

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

这是一个准确的估计吗?

4

3 回答 3

25

如果您想知道数据库的当前大小,可以尝试以下操作:

SELECT table_schema "Database Name"
     , SUM(data_length + index_length) / (1024 * 1024) "Database Size in MB"
FROM information_schema.TABLES
GROUP BY table_schema
于 2013-07-13T07:05:30.217 回答
11

我的粗略估计是:id 1 个字节,其他两个字段各 32 位。

你走远。请参阅 MySQL数据类型存储要求文档。尤其是:

  • ABIGINT是 8 个字节,而不是 1。

  • CHARa or列所需的存储空间VARCHAR取决于数据库使用的字符集(!),但CHAR(32)对于VARCHAR(32).

  • 您根本没有考虑索引的大小。它的大小取决于数据库引擎,但绝对不是零。有关更多信息,请参阅有关InnoDB 行结构的文档。

于 2013-07-13T07:12:36.623 回答
3

在 MySQL 网站上,您会找到有关存储要求的非常全面的信息:http: //dev.mysql.com/doc/refman/5.6/en/storage-requirements.html

这也取决于您是否使用 utf8。

于 2013-07-13T07:00:17.737 回答