我有许多图像在数据库中以VARBINARY(MAX)
(使用FileStream)存储。我希望一次检索大约10张图像。
使用ASP.net的规定的,最常见的方式是使用HTTP处理程序并为每个单独的图像命中数据库。看起来很好,但有时候有点慢。
最好是在一个大数据块中同时下载给定页面的所有图像吗?或者我应该尝试单独抓取每个?最佳做法?
答案 0 :(得分:1)
可能最好在没有设置Cookie的域上单独执行,或者确保您的处理程序可以同时处理多个请求。这样,您可以同时从数据库中流式传输多个结果,并在获取网络服务器时从其中流式传输多个图像。
答案 1 :(得分:1)
那么,
我认为很多人会有不同的意见,以及最佳实践对他们的理由,但实际上,这完全取决于硬件,软件,数据结构,以及数据是否正常化。
一般来说,SQL服务器更喜欢SET操作,这意味着,循环通常较慢。但是,循环对于IOP相关问题更安全,并且它们更能减少锁定。
我不确定您正在使用哪个对象映射器或内置的SQL库(我觉得您在构建SQL类后可能正在使用LINQ),但它还取决于您使用的库,而我肯定会推荐小巧玲珑。
我认为一次阅读它们会更快,这就是为什么; - 如果它是你所说的,并且你每次都为图像命中数据库,那么这会增加重新连接到数据库的延迟,因此会发生延迟。但是当有一个连接时,数据检索是直的,并且您的连接在那时是打开的,无需进一步的会话身份验证。
我建议一次下载所有内容,并在此过程中通过下载屏幕通知最终用户。此外,对于检索数据,此链接非常有用,我相信:https://technet.microsoft.com/en-us/library/dd425070(v=sql.100).aspx
根据服务器和版本的功能,您肯定可以使用不同的功能。