TEXT和LONGTEXT的最小尺寸

时间:2015-04-28 13:47:24

标签: mysql sql sqldatatypes

我的数据库列存储了一个长文本。大多数文本都小于TEXT(64KB)的限制。然而,其中约0.1%是长文本(> 64KB)。最初我使用TEXT作为列数据类型,我必须忽略带有长文本的条目。但是如果我使用LONGTEXT作为数据类型,我发现数据库大小加倍。具有长文本的条目的总大小应远小于具有普通文本的条目的总大小。

对于TEXT和LONGTEXT,是否存在某种“最小大小”,使得每个条目的LONGTEXT数据类型大于具有TEXT数据类型的条目,并导致存储差异?

更具体地说,一个TEXT数据类型的条目大约需要1KB。 LOnGTEXT的一个条目大约需要2KB。

我正在使用innoDB,以及其他列'类型是:

VARCHAR(50) INT(10) VARCHAR(70) VARCHAR(12) VARCHAR(7) VARCHAR(50) VARCHAR(50) 日期时间

2 个答案:

答案 0 :(得分:0)

由于每个LONGTEXT值存储的前缀,您可能会遇到规模增长。

来自reference manual

  

每个LONGTEXT值使用4字节长度前缀存储   表示值中的字节数。

答案 1 :(得分:0)

MySQL将BLOB数据(包括TEXTLONGTEXT)内联存储,并以字节数为前缀。 TEXT存储计数为两个字节的前缀,因此它可以存储最多2 ^ 16 - 2个字节的信息。 LONGTEXT将计数存储在一个四字节的前缀中,因此它可以存储最多2 ^ 32 - 4个字节的信息。

将字段存储为LONGTEXT不会自动导致数据库大小加倍,因为唯一的事情是前缀的大小。但是,将{/ 1>}从TEXT更改为LONGTEXT理论上可能会使规模翻倍,因为MySQL在更改信息时会复制信息,并且在信息发布时不会自动释放信息&#完成了。