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可以根据需要大小的列.
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数据的额外查找可能很昂贵.