gpt4 book ai didi

MySQL 记录磁盘使用计算 |我对吗?

转载 作者:行者123 更新时间:2023-11-30 23:05:07 25 4
gpt4 key购买 nike

我正在尝试估算 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 个字节?

感谢关注!

最佳答案

一条记录本身会用到

1 个字节的偏移量

可空位中的 0 个字节

“额外字节” header 中的 5 个字节

4字节ID

6字节交易ID

7字节回滚指针

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

其他整数中的4*4字节

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

“额外字节” header 中的 5 个字节

4 字节 INT 用于 FK 值

4 字节 INT 主键

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

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

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

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

关于MySQL 记录磁盘使用计算 |我对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22235894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com