如何估计已知列范围的MYSQL数据库大小

时间:2016-04-22 11:51:16

标签: mysql

我正在尝试估算已知列范围的数据库大小。我已经搜索过但却找不到合适的规则。

我创建了一个包含单个表的数据库,该表有40个列。一列是int主键,其余39列是LONGTEXT类型。

我期待200万条记录。

CREATE TABLE IF NOT EXISTS `TempTable` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
    `Column1` longtext,
    `Column2` longtext,
    --
    --
    --

    `Column39` longtext,

  PRIMARY KEY (`Id`)
)

我该怎么做?我是否需要插入假数据来计算大小?

1 个答案:

答案 0 :(得分:1)

使用Data Type Storage Requirements,您可以估算表格大小:

  • int为4个字节,请注意(11)仅表示要显示的最大位数(请参阅this answer)。
  • 每个字符串列
  • (L + 4) L 是字符串的字节长度。但请注意,当您使用Unicode(utf8)时,并非所有字符都使用相同的字节数。

所以尺寸如下:

R * ( 4 + 39*(L+4) )

R是记录数,L是平均字符串大小。

取R = 2 * 10 6 且L = 1000字节,这给出了:

2 * 10 6 *(4 + 39(1004))= 7.832 * 10 10 字节

对于其他L&#39,

约为72.9 GiB。

L (bytes)       : 10    100   1000   10000
Table size (GiB):  1    7.5   72.9   726.7

进一步说明: