【发布时间】:2011-07-18 03:41:30
【问题描述】:
我使用的是 SQL Server 2000。我需要在我的数据库中存储一个图像。我正在分析我是否需要在我的应用程序的数据库中创建一个新表,或者我需要为单独的图像上传创建一个新数据库。如果我在同一个数据库中创建新表,性能会如何?会影响应用性能吗?
【问题讨论】:
-
嘿,是否可以只将 URL 保存到数据库中的图像?我认为这将是最有效的。
标签: c# sql sql-server-2000
我使用的是 SQL Server 2000。我需要在我的数据库中存储一个图像。我正在分析我是否需要在我的应用程序的数据库中创建一个新表,或者我需要为单独的图像上传创建一个新数据库。如果我在同一个数据库中创建新表,性能会如何?会影响应用性能吗?
【问题讨论】:
标签: c# sql sql-server-2000
Microsoft Research 有一篇非常好的论文,名为 To Blob or Not To Blob。
他们经过大量的性能测试和分析后得出的结论是:
如果您的图片或文档的大小通常超过 1 MB,则将它们存储在文件系统中会更有效
在这两者之间,根据你的使用情况有点折腾
如果您决定将图片放入 SQL Server 表中,我强烈建议您使用单独的表来存储这些图片 - 不要将员工照片存储在员工表中 - 将它们保存在单独的表中。这样一来,Employee 表就可以保持精简、平均和非常高效,假设您并不总是需要选择员工照片作为查询的一部分。
对于文件组,请查看Files and Filegroup Architecture 了解简介。基本上,您可以从一开始就为大型数据结构创建带有单独文件组的数据库,或者稍后添加一个额外的文件组。我们称之为“LARGE_DATA”。
现在,每当您要创建一个需要存储IMAGE 列的新表时,您可以为大数据指定此文件组:
CREATE TABLE dbo.YourTable
(....... define the fields here ......)
ON Data -- the basic "Data" filegroup for the regular data
TEXTIMAGE_ON LARGE_DATA -- the filegroup for large chunks of data
查看有关文件组的 MSDN 介绍,并尝试使用它!
【讨论】:
通常将图像存储在数据库中是一件坏事。您是否考虑过将图像存储在文件系统中并仅将其位置存储在数据库中?文件系统旨在存储文件,因此绕过它们并使用数据库几乎没有优势。
【讨论】: