2017-09-04 89 views
1

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

回答

1

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

嗯,空间有一点“四舍五入”,因为整个16KB页面中的空间分配高达半个MB,然后BLOB/TEXT文档一次占用1MB一半以上的MB空间。但我不担心这一点。

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

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

+0

谢谢Bill Karwin – Satya

1

对于数据类型存储InnoDB的数据库,你可以参考寿这个MySQL文档链接 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

+0

如果有一天有机会超过11MB,那么你可以把它做成'LONGTEXT'。 –