如果我有一个varbinary(Max)数据类型的表,并且列上有FILESTREAM属性。现在我需要存储另一个二进制数据但没有FILESTREAM属性。那么,如果我在同一个表上添加另一个包含VARBINARY(MAX)数据类型的列会出现性能问题吗?如果我将表与FILESTREAM属性分开并创建另一个单独的表来存储其他VARBINARY(MAX)数据,我会获得更快的性能吗?
答案 0 :(得分:0)
对于你的这个问题。你可以。 Filestream是sqlserver2008中的新功能,而在2012年,更改名称,调用fileTable。 我测试了它。这个功能是使用DB管理文件。和文件大约5M / s。 对于你的其他列,如果你没有打开文件流,该文件将更改二进制文件,并存储在sqlserver数据文件中。 打开文件流,该文件将存储服务器,并由sqlserver管理。 对于你的第二个问题,我不是百分百肯定,但如果你使用文件流,它将获得更多的效率,需要注意备份和存储。
一年前,我在我们的系统中实现了这个功能,如果你愿意,我有shcame,我会发给你。 对不起,我的英语不好。
答案 1 :(得分:0)
如果在同一个表上添加另一个VARBINARY(MAX),您的表现可能会受到影响
当设置FILESTREAM属性时,SQL Server将BLOB数据存储在NT文件系统中,并在表中保留指向文件的指针。这允许SQL Server利用NTFS I / O流功能。并减少SQL引擎的开销
MAX类型(varchar,nvarchar和varbinary)以及在您的情况下VARBINARY(MAX)数据类型不能在内部存储为连续的内存区域,因为它们可能会增长到2Gb。所以他们必须用流媒体接口代表。
他们会非常影响表现
如果您确定您的文件很小,那么如果它们更大,则可以选择VARBINARY(MAX)另外两种方式2gb FILESTREAM是您的最佳选择
是的,我建议你创建另一个单独的表来存储其他VARBINARY(MAX)数据