我的数据库列存储了一个长文本。大多数文本都小于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) 日期时间
答案 0 :(得分:0)
答案 1 :(得分:0)
MySQL将BLOB数据(包括TEXT
和LONGTEXT
)内联存储,并以字节数为前缀。 TEXT
存储计数为两个字节的前缀,因此它可以存储最多2 ^ 16 - 2个字节的信息。 LONGTEXT
将计数存储在一个四字节的前缀中,因此它可以存储最多2 ^ 32 - 4个字节的信息。
将字段存储为LONGTEXT
不会自动导致数据库大小加倍,因为唯一的事情是前缀的大小。但是,将{/ 1>}从TEXT
更改为LONGTEXT
理论上可能会使规模翻倍,因为MySQL在更改信息时会复制信息,并且在信息发布时不会自动释放信息&#完成了。