MySQL中的Varbinary vs Blob

Jim*_*myb 23 mysql binary blob

我有大约2k的原始二进制数据需要存储在表中,但不知道是否选择Varbinary或Blob类型.我已经阅读了MySQL文档中的描述,但没有找到任何合同和比较描述.我还读到varbinary最多只支持255个字符,但我成功创建了一个varbinary(2048)字段,所以我有点困惑.

二进制数据不需要编入索引,也不需要查询.使用PHP中的另一种类型是否有优势?

谢谢!

Rom*_*ain 18

VARBINARY 在MySQL 5.0.2及更低版本上绑定为255个字节,在5.0.3及更高版本上绑定为65kB.

BLOB 必然是65kB.

最终,除了你想要保持与"旧"MySQL版本的兼容性之外,VARBINARY几乎与BLOB(从可以存储在其中的角度)的角度相同.在MySQL文档说:

在大多数方面,您可以将BLOB列视为VARBINARY可以根据需要大小的列.

  • 当你说BLOB和VARBINARY是相同的时要小心:VARBINARY是内联存储的,所以如果你不知道你在做什么,你可能会严重降低选择性能.您应该只使用VARBINARY存储您可能想要内联索引的压缩数据或数据.可选信息和大型二进制文件应使用BLOB,因为其外部存储不会影响选择性能. (8认同)

Fer*_*hez 14

实际上blob可以更大(有tinyblob,blob,mediumblob和longblob http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html),最大尺寸限制为2 ^ 32 -1 .

blob存储也会在行的"外部"增长,而max varbinary大小则与可用的可用行大小相关联(因此它实际上可能小于64Kb).

两者之间存在一些细微差别

1)使用索引脚本(blob需要索引的前缀大小,varbinary不需要)http:/en/column-indexes.html
CREATE TABLE test(blob_col BLOB,INDEX(blob_col(10)));

2)如前所述,在MySql 5.0.x或更早版本的varbinary和blob之间管理不同的trailling空间问题:http:///en/blob.html http:///en/binary-varbinary.html

(截断链接,因为stackoverflow认为太多链接是垃圾邮件)


小智 11

一个显著差异是blob类型被存储在辅助存储器,而varbinaries内联存储在行中以同样的方式作为VARCHAR处理和其他"简单"的类型.

这会对繁忙系统中的性能产生影响,其中用于获取和操作blob数据的额外查找可能很昂贵.

  • 它适用于 mysql 8.0 吗? (4认同)
  • 对于 5.0.3 及更高版本是否如此? (2认同)

mat*_*att 5

值得指出的是,内存存储引擎不支持BLOB/TEXT,但它适用于VARBINARY.