2016-04-22 29 views
1

我想知道列范围的数据库大小。我搜查了它,但无法找到任何适当的规则。如何估计已知列范围的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`) 
) 

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

+0

@RolandStarke〜4 GB 2万行? –

回答

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 和L = 1000个字节,这给出了关于:

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

大约是72.9吉布,对于其它的L:

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

一些进一步的说明: