为了账号安全,请及时绑定邮箱和手机立即绑定

在SQLServer中存储映像?

在SQLServer中存储映像?

慕田峪4524236 2019-07-26 15:14:21
在SQLServer中存储映像?我制作了一个小型演示站点,在上面我将图像存储在SQL服务器上的图像列中。我有几个问题是.。这是个坏主意吗?当我的网站增长时,它会影响到它的性能吗?另一种方法是将映像存储在光盘上,并且只将对映像的引用存储在数据库中。这肯定是许多人共同面临的困境。我会欢迎一些建议,如果可以的话,我很乐意少犯一些错误。
查看完整描述

3 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

微软研究部有一篇很好的论文对布洛布还是不对布洛布.

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

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

  • 如果图片或文档的大小通常超过1MB,则将它们存储在文件系统中效率更高(使用SQLServer 2008的FILESTREAM属性,它们仍然处于事务性控制和部分数据库中)。

  • 在这两者之间,取决于你的使用情况,这有点麻烦。

如果您决定将图片放到SQLServer表中,我强烈建议使用单独的表来存储这些图片-不要将Employee照片存储在Employee表中-将它们保存在单独的表中。这样,Employee表就可以保持简洁、刻薄和非常高效,前提是您并不总是需要选择Employee照片作为查询的一部分。

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

现在,每当要创建需要存储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简介,并玩它!




查看完整回答
反对 回复 2019-07-27
?
月关宝盒

TA贡献1772条经验 获得超5个赞

有一次,我陷入了这样的困境,对谷歌进行了大量的研究,征求意见。我发现,实际上,许多人认为将映像保存到磁盘中更好,而MySQL则允许更容易地访问,特别是通过PHP等语言进行访问。

我发现了一个类似的问题

MySQL BLOB还是用于存储小型PNG图像的文件?

我的最后结论是,对于像配置文件图片这样的东西,仅仅是每个用户需要存在的小方格图像,MySQL会比在HDD中存储一堆大拇指更好,而对于相册之类的东西,文件夹/图像文件会更好。

希望能帮上忙



查看完整回答
反对 回复 2019-07-27
?
largeQ

TA贡献2039条经验 获得超7个赞

为什么在数据库中存储图片是好的,而不是在Web服务器上的目录中存储图片。

您已经制作了一个包含大量图片的应用程序,这些图片存储在服务器上的一个文件夹中,客户端已经使用了多年。

现在他们来找你了。他们的服务器已经被销毁,他们需要在一个新的服务器上恢复它。他们再也不能访问旧服务器了。他们唯一的备份是数据库备份。

当然,您有源代码,可以简单地将其部署到新服务器,安装SQLSERVER并恢复数据库。但现在所有的照片都不见了。

如果您已经将图片保存在SQLSERVER中,那么一切都将像以前一样工作。

只是我的两分钱。




查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 433 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信