【发布时间】:2014-03-07 22:19:10
【问题描述】:
我正在尝试估计 MySQL RDBMS 中表的每条记录所需的实际磁盘使用空间。
表格的结构如下:
- ID INT 4 字节;
- VARCHAR(34) 34 字节;
- INT 4 字节;
- INT(5) 4 字节;
- INT 4 字节;
- INT 4 字节,也是 FOREIGN KEY;
所以有 5 个 INT 字段和一个最多 34 个字符(即 34 个字节)的 VARCHAR。
我有两个问题:
1) 每条记录的总数应该是 54 个字节(当然,使用变量 VARCHAR)我说的对吗,或者在估计磁盘使用空间时我应该考虑一些开销字节?
2) 我还使用了 INT(5) 而不是 CHAR(5),因为我只需要在该字段中存储 5 个数字(我将通过应用程序来执行此操作,使用 regExp 和字符串长度,因为我知道INT(5) 可能超过一个 5 位的 int)。 但这是否可以被认为是磁盘使用空间的优化,因为我使用的是 INT(4 个字节)而不是 5 个字节的 CHAR(5),即每条记录多 1 个字节?
感谢关注!
【问题讨论】:
-
检查这个答案 - 有一些计算dba.stackexchange.com/questions/59909/…
-
要计算确切大小,请提供其他信息:1) ID 是主键吗? 2) VARCHAR 字段 - 什么编码? 3) 字段可以为 NULL 吗?
-
是ID为PRIMARY KEY AUTO_INCREMENT,VARCHAR字段的编码为utf-8编码(表的CHARSET设置为UTF8),所有字段不为NULL。正如我之前所说,最后一个 INT 字段也是 FOREIGN KEY。那么我错过了多少开销?
标签: mysql record diskspace disk-access