【问题标题】:Datatype sizes and storage in mysqlmysql中的数据类型大小和存储
【发布时间】:2018-02-12 07:37:39
【问题描述】:

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

【问题讨论】:

    标签: mysql sqldatatypes large-text


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      对于 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

      【讨论】:

      • 如果哪天有机会超过11MB,你也可以LONGTEXT
      猜你喜欢
      • 1970-01-01
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 2013-05-13
      • 2011-01-07
      • 1970-01-01
      • 2016-10-27
      相关资源
      最近更新 更多