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 存储完整长度。因此,当所有字符串的长度都相同时,最好使用这些类型。
我是使用 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 存储完整长度。因此,当所有字符串的长度都相同时,最好使用这些类型。