我是一个使用mysql数据库的乞丐。我试图将用户数据保存在一个大Json文件中,在最坏的情况下,该文件的大小大约为5Mb --显然我应该使用大文本,但我想知道11 5Mb的其余部分发生了什么。浪费了吗?
发布于 2017-09-04 06:25:22
不,MySQL只按案例存储所需的数据。也就是说,如果JSON在一行上是5MB,则需要使用MEDIUMTEXT,但它只存储5MB,而不是存储16 5MB。如果下一行的JSON仅为42 is,则只存储42 is。这是可变存储器。
嗯,这里有一些“四舍五入”的空间,因为在整个16 MB的页面中分配的空间高达半MB,然后每次为BLOB/TEXT文档分配超过半MB的空间。但我不担心这个。
MySQL中的所有可变长度数据类型都是这样工作的。VARCHAR,VARBINARY,TEXT,BLOB,以及所有不同类型的文本和BLOB。
只有CHAR和二进制存储完整的长度,即使你不需要它。因此,当所有字符串长度相同时,最好使用这些类型。
发布于 2017-09-04 06:11:55
对于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。
https://stackoverflow.com/questions/46030716
复制相似问题