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

Datatype sizes and storage in mysql

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

对于 INNODB 数据库中的数据类型存储,您可以参考此 mysql 文档 link https://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html 基本上你可以用这些维度存储数据 假设 L 是您的 field/file 维度

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

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

好吧,space 中有一点 "rounding up",因为 space 分配在整个 16KB 页面中,最多半 MB,然后一次分配 1MB BLOB/TEXT 文件超过半MB。但我不会担心这个。

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

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