如何远程处理SQL Server时减少响应时间?

时间:2012-05-20 14:47:45

标签: sql-server vb.net ado.net

我创建了一个vb.net应用程序,它通过Internet在远程位置使用SQL Server数据库。

有10个vb.net客户端正在同时工作。

问题在于插入新行或从数据库中检索行时发生的延迟时间,表单在处理数据库时似乎冻结了一段时间,我不想使用后台工作程序克服冻结问题。

我希望消除延迟时间并尽可能减少延迟时间

欢迎任何提示,建议或信息,提前感谢

3 个答案:

答案 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)

您可以采取一些措施来加快速度,但是如果没有看到代码就很难说。

  1. 如果您使用通用插入 - 开始使用存储过程
  2. 如果您在每个命令后关闭连接,那么......好吧。建立连接通常是更“昂贵”的操作之一
  3. 增加两者之间的管道。
  4. 添加索引
  5. 调查您的SQL Server可能没有以首选方式设置。