【问题标题】:MYSQL TINYBLOB vs LONGBLOBMYSQL TINYBLOB 与 LONGBLOB
【发布时间】:2012-02-15 07:15:50
【问题描述】:

这是我上一个问题的后续:Blob and Storage Requirement

我使用SHOW TABLE STATUS做了一些测试,发现实际使用的总磁盘空间仅取决于上传到数据库的实际文件的大小,而不取决于列的类型(例如 TINYBLOB 或 LONGBLOG)。

那么,如果不是这种情况,那么当我们选择一种而不是另一种 BLOB 类型时会有什么不同?

【问题讨论】:

    标签: mysql database file blob space


    【解决方案1】:

    每个大小的 blob 字段都会保留额外的字节来保存大小信息。 longblob 使用 4+n 字节的存储空间,其中 n 是您要存储的 blob 的实际大小。如果您只存储(例如)10 字节的 blob 数据,那么您将使用 14 字节的空间。

    相比之下,一个 tinyblob 使用 1+n 个字节,因此您的 10 个字节将占用 11 个字节的空间,节省了 3 个字节。

    仅处理少量记录时,3 个字节并不算多,但随着 DB 记录数的增加,节省的每个字节都是一件好事。

    【讨论】:

    • 正是我想知道的。接受(实际上我将不得不等待 8 分钟)。
    • 对这个答案的快速补充:节省的 3 个字节也不仅仅是节省磁盘空间。它还会影响内存、缓存等的适合程度,因此它也会对性能产生影响。
    • @MarcB,您的答案是指 InnoDB 引擎还是 MyISAM 引擎?另外,您有来源/引文吗?
    • 这里是用于不同 blob 大小的额外字节的来源:dev.mysql.com/doc/refman/5.7/en/…
    【解决方案2】:

    使用 BLOB 使您的大小与文件大小成正比,而不是与普通数据库字段中的文件数量成正比(BLOB 未在记录空间中分配 - 除了大小和文件数据的内部链接) BLOB 类型之间的最大区别来自图像的允许大小(请参阅链接)。 由于 BLOB(long) 在处理大图像时仅增加了 3 个字节,我注意到大多数程序使用 BLOB(long) - 当您将 3 个字节与 1M+ 字节的图像进行比较时,这是一个无关紧要的成本,程序员选择 BLOB(long)以避免随着创建的增长而重组数据库。

    https://tableplus.com/blog/2019/10/tinyblob-blob-mediumblob-longblob.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      相关资源
      最近更新 更多