6

我有一个应用程序数据库,其中包含一个用户表(基于计数字段 * typelength 每个用户的数据 1kbyte),以及属于用户的大约 100 个相同大小的事物(每个事物 0.5 kbyte),它位于“用户"表和一个"事物"表。

这似乎会导致每个用户大约 51kbytes 的数据。但是,我听说对于 MySQL,我应该将它加倍以覆盖索引表,这将使我达到 102kbytes/user 是真的吗?MySQL 是否还有其他数据扩展因素需要考虑,或者 102 KB 是一个好的估计值?

除了索引因子(我认为是 2)和存储效率(我也认为是 2)之外,MySQL 中的数据存储还有其他乘数吗?

4

1 回答 1

2

简短回答
大小比 MyISAM 增加 2-3 倍是常见的,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 引擎空间使用比较:
Part1:http
://marksverbiage.blogspot.com/2008/02/mysql-engines-and-space-usage.html Part2: 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。
  • 你在打包钥匙(慢)吗?
  • 表是多余的吗?
  • 不要忘记日志(二进制日志、慢查询日志、错误日志......)
  • 是否声明为可为空的行,如果是,则为每行的每个可空列添加一个额外的字节。
  • 你使用什么字符集?
于 2011-09-06T22:25:27.010 回答