我创建了一个vb.net应用程序,它通过Internet在远程位置使用SQL Server数据库。
有10个vb.net客户端正在同时工作。
问题在于插入新行或从数据库中检索行时发生的延迟时间,表单在处理数据库时似乎冻结了一段时间,我不想使用后台工作程序克服冻结问题。
我希望消除延迟时间并尽可能减少延迟时间
欢迎任何提示,建议或信息,提前感谢
答案 0 :(得分:3)
嗯,2个问题:
表单在处理数据库时似乎冻结了一段时间,我不想使用后台工作程序 克服冻结问题。
虚荣,武装和现实很少混合。任何需要超过SHORT时间(0.1-0.5秒)的操作应该运行异步,只有这样才能使UI响应。无论问题是什么,如果在互联网应用程序上需要更长的时间,请将它们分离。
可是:
问题在于插入新记录或从数据库中检索记录时发生的延迟时间,
那么,问题是什么?认真。这是一个延迟问题(太多次往返,工作更高效的sql,批处理,所以不要发送20个q1uestions等待每个结果)或者是服务器重叠 - 从问题是否真的是一个延迟不清楚问题。
最后:
我想消除延迟时间
为了改变物理规则(主要是光速)或你当地的医生,向你所信仰的任何上帝祈祷,最终以低成本获得量子隐形传送。数据包需要花时间去旅行,没办法改变它。
检查您是否使用了太多的旅行。从来没有(!)使用SQL远程使用sql server - 放入Web服务并使其适合应用程序,甚至可能与屏幕的1:1匹配,因此您可以在一次往返中请求数据并发送更新,不是十几个。我们在12年前用.NET中的自定义ORM做了类似的事情,我们使用了一个数据访问层,在一次运行中验证了多个查询,并为它们重新调整了多个结果集 - 所以一个包含10个下拉列表的表单可以要求所有10个数据集在一次往返。如果请求需要0.1秒的互联网时间 - 那么这将节省0.9秒。我们有一个大约100(!)次往返(形成一棵树)的形式,并将其降低到不到5 - 谈论“需要时间”到“whow,there”。再加上它是异步的,对不起。
然后实现移动大量数据是缓慢的,除非你有即时的高带宽连接。
对于异步操作而言,这是极其简单的 - 如果您有无法优化的传输时间或延迟时间问题,并且不想使用异步,则继续提供糟糕的体验。
答案 1 :(得分:2)
您可以异步执行SQL调用,让Microsoft处理后台进程。
http://msdn.microsoft.com/en-us/library/7szdt0kc.aspx
请注意,这不会减少SQL服务器的响应时间,因为您必须尝试提高网络速度或提高SQL语句的性能。
答案 2 :(得分:1)
您可以采取一些措施来加快速度,但是如果没有看到代码就很难说。