我是使用 mysql 数据库的初学者。我正在尝试将用户数据保存在一个大型 Json 文件中,在最坏的情况下,该文件的大小约为 5Mb,很明显我应该使用 LARGE TEXT,但我想知道 11Mb 的其余部分会发生什么。是不是浪费了?
user4875712
问问题
73 次
2 回答
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
于 2017-09-04T06:11:55.063 回答
0
不,MySQL 仅根据具体情况存储您需要的数据。也就是说,如果您的 JSON 在一行上是 5MB,则需要使用 MEDIUMTEXT,但它只存储 5MB,而不是 16MB。如果 JSON 在下一行只有 42KB,那将只存储 42KB。是可变存储。
嗯,有一点“四舍五入”的空间,因为空间被分配在整个 16KB 页面中,最多半 MB,然后每次 1MB 用于超过半 MB 的 BLOB/TEXT 文档。但我不会担心这个。
MySQL 中的所有可变长度数据类型都以这种方式工作。VARCHAR、VARBINARY、TEXT、BLOB 以及所有不同类型的 TEXT 和 BLOB。
即使您不需要它,也只有 CHAR 和 BINARY 存储完整长度。因此,当所有字符串的长度都相同时,最好使用这些类型。
于 2017-09-04T06:25:22.123 回答