这是我上一个问题的后续跟进:Blob and Storage Requirement
我使用SHOW TABLE STATUS
进行了一些测试,发现实际使用的磁盘空间总量仅取决于上传到数据库的实际文件的大小,而不取决于列的类型(例如TINYBLOB或LONGBLOG)
那么,如果情况并非如此,那么当我们选择其中一种BLOB类型时会有什么不同呢?
答案 0 :(得分:24)
每个blob字段大小都会保留额外的字节来保存大小信息。 longblob使用4 + n字节的存储空间,其中n是您要存储的blob的实际大小。如果您只存储(比方说)10个字节的blob数据,那么您将占用14个字节的空间。
相比之下,tinyblob使用1 + n个字节,因此你的10个字节将占用11个字节的空间,节省3个字节。
只处理几条记录时,3个字节并不多,但随着DB记录计数的增加,保存的每个字节都是一件好事。
答案 1 :(得分:0)
使用 BLOB 使您的大小与文件的大小成正比,而不是与普通数据库字段中的文件数量成正比(BLOB 不在记录空间中分配 - 除了大小和文件数据的内部链接) BLOB 类型之间的巨大差异来自允许的图像大小(请参阅链接)。 由于 BLOB(long) 在处理大图像时仅增加了 3 个字节,我注意到大多数程序使用 BLOB(long) - 当您将 3 个字节与 1M+ 字节的图像进行比较时,这是一个无形的成本,而程序员选择了 BLOB(long)避免随着创建的增长而重构数据库。
https://tableplus.com/blog/2019/10/tinyblob-blob-mediumblob-longblob.html