0

我正在尝试估计 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)我说的是对的,还是在估计磁盘使用空间时我应该考虑一些开销字节?

( 5) 可能超过 5 位的 int)。但这是否可以被认为是磁盘使用空间的优化,因为我使用的是 INT(4 个字节)而不是 5 个字节的 CHAR(5),即每条记录多 1 个字节?

感谢关注!

4

1 回答 1

0

一条记录本身将使用

1 个字节的偏移量

可空位中的 0 个字节

“额外字节”标头中的 5 个字节

4字节ID

6 字节交易 ID

7字节回滚指针

VARCHAR(34) 中的 0-3*34 个字节(由于 UTF8,一个字符最多可能占用 3 个字节)

4*4 字节,其他整数

FK 的每个不同值将导致二级索引中的一条记录。它将使用

“额外字节”标头中的 5 个字节

FK 值的 4 字节 INT

主键的 4 个字节 INT

其他开销是页面级别:标题页填充因子 15/16 中每页 120 字节 (16k) - 即一页可能包含 15k 记录。

最后 - 添加非叶子页面使用的空间,无论如何应该很小

因此,回答问题 - 1) 是的,您可以使用上述信息计算出一些开销。

2) UTF8 中的 CHAR(5) 将为其长度添加一个字节,因此 INT 看起来很容易使用

于 2014-03-07T14:19:10.220 回答