mysql中的数据类型大小和存储

时间:2017-09-04 05:24:42

标签: mysql sqldatatypes large-text

我是使用mysql datatbase的初学者。我正在尝试将用户数据保存在一个大的Json文件中,在最坏的情况下,它的大小约为5Mb,显然我应该使用LARGE TEXT,但我想知道11Mb的其余部分会发生什么。浪费了吗?

2 个答案:

答案 0 :(得分:1)

对于INNODB数据库中的数据类型存储,您可以参考这个mysql doc链接 https://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html   基本上你可以存储这些维度的数据 假设L是您的字段/文件维度

TINYBLOB, TINYTEXT    L < 2^8 ( 2^8 - 1 byte)
BLOB, TEXT            L < 2^16 ( 2^16 - 2 bytes)
MEDIUMBLOB, MEDIUMTEXT   L < 2^24 (2^24 -3 bytes)
LONGBLOB, LONGTEXT    L < 2^32 (2^32 - 4 bytes)

因此,对于11 MB的文件,您可以再次使用MEDIUMTEXT

答案 1 :(得分:1)

不,MySQL仅根据具体情况存储您需要的数据。也就是说,如果你的JSON是一行5MB,你需要使用MEDIUMTEXT,但它只存储5MB而不是16MB。如果JSON在下一行只有42KB,那么只存储42KB。它的变量存储。

嗯,有一点点&#34;四舍五入&#34;对于空间,因为空间分配在整个16KB页面中,最多半个MB,然后一个1MB,BLOB / TEXT文档一次超过半个MB。但我不担心这个。

MySQL中的所有可变长度数据类型都以这种方式工作。 VARCHAR,VARBINARY,TEXT,BLOB以及所有不同类型的TEXT和BLOB。

即使您不需要,也只有CHAR和BINARY存储全长。因此,当所有字符串长度相同时,最好使用这些类型。