【问题标题】:tables with multiple varbinary columns具有多个 varbinary 列的表
【发布时间】:2012-04-12 14:17:21
【问题描述】:

如果我有一个数据类型为 varbinary(Max) 的表,并且列上有 FILESTREAM 属性。现在我需要存储另一个二进制数据但没有 FILESTREAM 属性。那么,如果我在同一个表上添加另一个具有 VARBINARY(MAX) 数据类型的列,会有任何性能问题吗?如果我将具有 FILESTREAM 属性的表分开并创建另一个单独的表来存储其他 VARBINARY(MAX) 数据,是否可以获得更快的性能?

【问题讨论】:

    标签: sql-server database database-design


    【解决方案1】:

    对于你的这个问题。你可以。 Filestream 是 sqlserver2008 中的新特性,而 2012 年,更改名称,调用 fileTable。 我测试了它。这个功能是使用数据库管理文件.and up file 大约 5M/s。 对于您的其他列,如果您不打开文件流,该文件将更改二进制文件,并存储在 sqlserver 数据文件中。 打开文件流,文件将存储在服务器上,由sqlserver管理。 关于第二个问题,我不是100%肯定,但是如果你使用文件流,效率会更高,需要注意备份和存储。

    一年前,我在我们的系统中实现了这个功能,我有shcam,如果你想要,我会发给你。 对不起,我的英语不好。

    【讨论】:

      【解决方案2】:

      如果您在同一张表上添加另一个 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) 数据

      【讨论】:

        猜你喜欢
        • 2016-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        • 1970-01-01
        • 2016-01-18
        • 1970-01-01
        • 2020-03-04
        相关资源
        最近更新 更多