gpt4 book ai didi

sql-server-2008 - 使用文件流存储图像和缩略图是一个好主意吗?

转载 作者:行者123 更新时间:2023-12-04 13:53:42 24 4
gpt4 key购买 nike

我们正在设计一个.NET应用程序,该应用程序存储和搜索大量图像(> 100.000)。

上载图像时,需要创建缩略图并将原始图像和缩略图存储在数据库(SQL Server 2008 R2)中。

我读过,存储图像的最佳方法是使用FILESTREAM

http://msdn.microsoft.com/en-us/library/cc949109.aspx

但是,当图像较小时,这是无效的。

使用文件流存储图像和缩略图是一个好主意吗?还有更好的选择吗?

最佳答案

Microsoft Research的一篇非常好的论文To Blob or Not To Blob深入讨论了该主题。

经过大量的性能测试和分析,他们的结论是:

  • (如果您的图片或文档的大小通常小于256K),将它们存储在数据库VARBINARY列中会更有效
  • (如果您的图片或文档通常大小超过1 MB),则将它们存储在文件系统中的效率更高(并且使用SQL Server 2008的FILESTREAM属性,它们仍处于事务控制之下并且是数据库的一部分)
  • 在这两者之间,取决于您的使用情况,有点儿折腾

  • 如果您决定将图片放入SQL Server表中,我强烈建议使用一个单独的表来存储这些图片-不要将employee foto存储在employee表中-请将它们保存在单独的表中。这样,假设您并不一定总是选择雇员图片作为查询的一部分,那么Employee表就可以保持精简,平均和高效。

    对于文件组,请查看 Files and Filegroup Architecture的介绍。基本上,您可以从一开始就为大型数据结构使用单独的文件组创建数据库,或者稍后再添加其他文件组。我们称之为“LARGE_DATA”。

    现在,只要您有一个新表要创建,该表需要存储 VARCHAR(MAX)VARBINARY(MAX)列,就可以为大数据指定此文件组:
     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简介,并试用它!

    关于sql-server-2008 - 使用文件流存储图像和缩略图是一个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8574511/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com