我在这里找不到确切的答案;如果我错了,请纠正我。
是否有令人信服的理由对预期中位数大小为 40KB 的文档文件使用 VARBINARY
,异常值非常罕见,可以达到 2MB(当有人上传扫描件时)?
根据Technet的说法:
[
FILESTREAM
适用于以下情况] 存储的对象平均大于 1 MB。
。就我而言,这与事实相去甚远。
文件表本身将非常小;绝对限制为 2000 个文件。批量下载将限制为 10 个文件。
在这种情况下,FILESTREAM
和VARBINARY(MAX)
之间可能根本没有区别。在做出选择时,除了文件大小和批量下载之外,还有其他因素需要考虑吗?
从性能的角度来看,你没有必要走FILESTREAM
路线。
但是,与VARBINARY(MAX)
相比,它确实具有另一个可能的优势 - 应用程序可以使用SqlFileStream
"直接"访问它。
Server 2008 中,如果将变量二进制列定义为存储为文件流,则二进制数据存储在由 SQL Server 引擎管理的特殊文件夹结构中。数据库内唯一保留的是指向文件的指针以及必需的 GUID 列,以便使用 Win32 客户端中的文件流。我认为,它可以帮助您了解您的问题。