关于大量图片写入

nenicsh 2012-07-06 10:43:24
小弟最近的项目需要将几十兆的图片分成四张,大图,中图,小图,原图上传到服务器,使用的是千兆交换机,大概8个左右客户端往服务器同时上传。

表中大致有这几个列
pic_sn pic1 pic2 pic3 pic4

当网络稳定的时候还好,一旦网络不是很稳定,很可能会出现pic_sn跟图片不对应,出现串位的情况,因为我的pic_sn是从图片上用条码枪扫描出来的,我认为可能是图片上传跟条码枪启动的不同步,导致在网络卡的时候用另一张图片的pic_sn代替了原有的pic_sn,希望了解sql server 的大侠帮帮忙,怎样处理可以缓解这种情况。

我用的是sql server 2008 r2
...全文
125 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
随风醉舞 2012-07-10
  • 打赏
  • 举报
回复
这么多图存表中的话,读取时也会耗资源啊!
几十万张?
發糞塗牆 2012-07-08
  • 打赏
  • 举报
回复
毫不犹豫地使用FILESTREAM吧,2008引入这个功能很大程度就是为了解决你的类似问题,另外不建议直接把图片存到数据库,而建议使用存放路径然后让应用程序去取。
筱筱澄 2012-07-07
  • 打赏
  • 举报
回复
保存数据库很重要的一点是为了安全。
haitao 2012-07-07
  • 打赏
  • 举报
回复
7M的图片?长宽像素各多少?
建议用我的批量缩略工具处理一下,可能会小很多,在保证质量的前提下
http://xq.com.nu/?app=photoLib
haitao 2012-07-07
  • 打赏
  • 举报
回复
几十万的图片,每个大概7兆 ?
存数据库里,肯定不明智
playwarcraft 2012-07-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
引用 5 楼 的回复:

一般图片我都是保存在某硬盘地址,然后数据库只存路径的

我会有几十万的图片,每个大概7兆左右,一张图片又要分成4张图,如果存本地管理起来非常麻烦,而且也缺乏安全性。
[/Quote]

我数学不好,那得多大?
算30w张 * 7M = 2100000M ? =2000多G = 2T ?
nenicsh 2012-07-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

一般图片我都是保存在某硬盘地址,然后数据库只存路径的
[/Quote]
我会有几十万的图片,每个大概7兆左右,一张图片又要分成4张图,如果存本地管理起来非常麻烦,而且也缺乏安全性。
筱筱澄 2012-07-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

4张图片是同步的,必须要保证图片的质量
是这样的,insert pic_sn,pic1,pic2,pic3,pic4
只是总共8台机器同时上传,因为只有大批量上传的情况下才会出现拥堵,所以我现在不具备测试条件,只能猜测大概是因为写入的数据量太大,而且是同一张表,导致拥堵,所以把pic_sn取串位了。所以希望有一个好的方法,在不影响图片质量的情况下,尽量的缓解这种情况
[/Quote]
不能改成列吗?

分布式对网络的要求太高了。
playwarcraft 2012-07-06
  • 打赏
  • 举报
回复
一般图片我都是保存在某硬盘地址,然后数据库只存路径的
nenicsh 2012-07-06
  • 打赏
  • 举报
回复
4张图片是同步的,必须要保证图片的质量
是这样的,insert pic_sn,pic1,pic2,pic3,pic4
只是总共8台机器同时上传,因为只有大批量上传的情况下才会出现拥堵,所以我现在不具备测试条件,只能猜测大概是因为写入的数据量太大,而且是同一张表,导致拥堵,所以把pic_sn取串位了。所以希望有一个好的方法,在不影响图片质量的情况下,尽量的缓解这种情况
筱筱澄 2012-07-06
  • 打赏
  • 举报
回复
其实你应该用行来处理,而不是列

行可以保证你切成任意个

还可以用个列来标示它的顺序。


  • 打赏
  • 举报
回复
用filestream吧
天-笑 2012-07-06
  • 打赏
  • 举报
回复
4张图片是异步传的吗?
为什么不打包在一起传?????
shoppo0505 2012-07-06
  • 打赏
  • 举报
回复
sql虽然提供了image格式,但是把这么多这么大的图片要存入数据库是很不明智的选择。
就像楼上的兄弟说的,应该就保存图片的路径。数据库保存的一般都是logo这种小图片。
这么多大图片的传输和之后的转换在之后就是噩梦。

现在云计算的概念铺天盖地,兄弟的思路也可以改改,况且图片处理是数据库的弱项。
建议用.Net进行图片的命名和分割,图片信息保存到数据库,在数据库中可以保存图片的缩略图,但是原图就用Filesystem保存吧。
jinjazz 2012-07-06
  • 打赏
  • 举报
回复
个人认为这和sqlserver没关系,是写程序处理的bug问题。你的问题即便是网络通畅,并发大了也会发生的。

检查多个客户端执行是否会产生相同的pic_sn
如果有服务器端程序处理,是否使用了静态变量等

ps:用sql保存文件也有好处的,比如分布式访问,数据备份,数据转移,扩展性等都比一堆小文件方便
Rotel-刘志东 2012-07-06
  • 打赏
  • 举报
回复
图片这东西不要存在数据库中。一般是图片存放单独硬盘,如果图片数量比较多的话。
数据库中给磁盘一个具体图片路径就可以了。
lweia 2012-07-06
  • 打赏
  • 举报
回复
既然都R2了
不如试一下12的filestream
很适合图片存储展现
便于管理
建议

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧