C# 在SQL Server 2008中保存100000个文件(1MB文件)

C# 在SQL Server 2008中保存100000个文件(1MB文件),c#,database,sql-server-2008,C#,Database,Sql Server 2008,我想用C语言创建一个应用程序来保存文件,比如pdf,doc,服务器上的图像,我有SQL server 2008 Enterprise 我是否可以每年在数据库中保存100000个文件(每个文件大小为1MB) 因此,我需要了解数据库的缺点和速度是否变慢,Microsoft Research有一篇非常好的论文,名为 经过大量性能测试和分析,他们得出的结论如下: 如果图片或文档的大小通常小于256K,则将其存储在数据库的VARBINARY列中会更有效 如果图片或文档的大小通常超过1MB,则将其存储在文

我想用C语言创建一个应用程序来保存文件,比如
pdf
doc
,服务器上的图像,我有SQL server 2008 Enterprise

我是否可以每年在数据库中保存100000个文件(每个文件大小为1MB)


因此,我需要了解数据库的缺点和速度是否变慢,Microsoft Research有一篇非常好的论文,名为

经过大量性能测试和分析,他们得出的结论如下:

  • 如果图片或文档的大小通常小于256K,则将其存储在数据库的
    VARBINARY
    列中会更有效

  • 如果图片或文档的大小通常超过1MB,则将其存储在文件系统中会更高效(使用SQL Server 2008的
    FILESTREAM
    属性,它们仍然处于事务控制之下,并且是数据库的一部分)

  • 在这两者之间,这取决于你的使用情况

对于文件组,请查看介绍。基本上,您可以从一开始就为大型数据结构使用单独的文件组创建数据库,或者稍后添加一个额外的文件组。我们称之为大数据

现在,无论何时创建需要存储
VARCHAR(MAX)
VARBINARY(MAX)
列的新表,都可以为大数据指定此文件组:

 CREATE TABLE dbo.YourTable
 (....... define the columns here ......)
 ON Data                   -- the basic "Data" filegroup for the regular data
 TEXTIMAGE_ON LARGE_DATA   -- the filegroup for large chunks of data

查看文件组上的MSDN简介,并使用它

文件系统擅长保存文件,数据库擅长保存数据。从这里开始。从技术上讲,你可以这样做,但这并不一定意味着这是一个好主意……如果我必须将这些文件存储在数据库中,我可能会使用
FILESTREAM
,然后你会得到两个世界。主要的缺点是,管理访问更难-即,如果你想浏览、打开或复制一些文件。您必须创建自己的工具(文件管理器)。