如果我查询一个 SQL Server VarBinary(MAX) 列,整个文件会被加载到内存中吗?

4
我的应用程序使用 SQL Server 2008,我们需要添加功能,以便用户可以选择将任何大小的文件保存到数据库表中。我已经设置了一个类似于以下格式的表:
- FileStorageID - int(indentity PK)(这也是另一个表的外键) - FileData - varbinary(max) - FileName - varchar(1000)
FileStorage 表与另一个表 Documentation 有零到一的关系。想法是用户可以编写一些文本、上传文件或两者都可以。
该表如下所示:
- DocumentationID - int(identity PK,FK 到“不相关有趣对象”表) - Text - varchar(max) - FileStorageID - int(FK 到上述 FileStorage 表)
我的问题是:当我使用 Entity Framework 5 查询 Documentation 表时,如果数据库中存在文件,整个文件是否会存储在内存中?如果是,什么样的门槛才会出现明显的性能问题?
1个回答

4
如果您查询Documentation表,相关的FileStorage表中的数据将不会被加载,直到您通过急切、显式或惰性加载来加载关系。一旦使用任何这样的方法或直接查询FileStorage,每个检索记录的整个FileData将被加载到内存中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接