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

mysql中的数据类型大小和存储,mysql,sqldatatypes,large-text,Mysql,Sqldatatypes,Large Text,我是一个使用mysql数据库的乞丐。我试图将用户数据保存在一个大的Json文件中,在最坏的情况下,这个文件的大小大约为5Mb。很明显,我应该使用大文本,但我想知道剩余的11Mb会发生什么。浪费了吗 对于INNODB数据库中的数据类型存储,您可以通过此mysql文档链接进行参考 基本上,您可以使用这些维度存储数据 假设L是字段/文件维度 TINYBLOB, TINYTEXT L < 2^8 ( 2^8 - 1 byte) BLOB, TEXT L < 2^1

我是一个使用mysql数据库的乞丐。我试图将用户数据保存在一个大的Json文件中,在最坏的情况下,这个文件的大小大约为5Mb。很明显,我应该使用大文本,但我想知道剩余的11Mb会发生什么。浪费了吗

对于INNODB数据库中的数据类型存储,您可以通过此mysql文档链接进行参考 基本上,您可以使用这些维度存储数据 假设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)
TINYBLOB,TINYTEXT L<2^8(2^8-1字节)
BLOB,文本L<2^16(2^16-2字节)
MEDIUMBLOB,MEDIUMTEXT L<2^24(2^24-3字节)
LONGBLOB,longtextl<2^32(2^32-4字节)

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

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

嗯,有一点空间的“四舍五入”,因为空间是在整个16KB页面中分配的,最大为半MB,然后一次分配1MB,用于超过半MB的BLOB/TEXT文档。但我不担心这个

MySQL中的所有可变长度数据类型都是这样工作的。VARCHAR、VARBINARY、TEXT、BLOB以及所有不同类型的TEXT和BLOB


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

如果有一天字符串长度有可能超过11MB,最好使用
LONGTEXT