2012-05-20 75 views
0

我创建了一个vb.net应用程序,它通过Internet在远程位置使用SQL Server数据库。如何减少远程处理SQL Server时的响应时间?

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

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

我想消除延迟时间,减少它尽可能

任何提示,建议或信息欢迎,在此先感谢

回答

3

好,2个问题:

的形式似乎冻结了一段时间,当它与数据库的交易,我不想使用后台工作 克服冻结问题。

虚荣,傲气与现实很少混合。任何需要超过一个短时间(0.1-0.5秒)的操作应该运行异步,只有这样才能使UI响应。无论问题是什么,如果CAN可能需要更长的时间才能在互联网应用上解耦,

但是:

的问题是在插入新记录或从数据库中检索记录,当这种情况发生的延迟时间,

那么,是什么问题?认真。这是一个延迟问题(太多的往返,更高效的sql,批处理,所以不发送20 q1uestions等待每个结果后)还是服务器重叠 - 从这个问题是否真的是一个延迟问题。

底:

我想消除延迟时间

祈求你相信什么神改变物理规则(光的大多是速度)或您的当地医生终于可以以低成本获得量子隐形传态。数据包现在需要时间旅行,没有办法改变。

检查您是否使用过多趟旅程。从来没有(!)通过SQL远程使用SQL Server - 放入一个Web服务并使其适合应用程序,甚至可能与您的屏幕1:1匹配,因此您可以请求数据并在一次往返中发送更新,不是十几个。当我们在12年前用我们的定制ORM做了类似的事情时。我们使用了一个数据访问层,它在一次运行中获得了多个查询并为它们提供了多个结果集 - 所以具有10个下拉列表的表单可以在一次往返中请求全部10个数据集。如果一个请求需要0.1秒的上网时间 - 那么这会节省0.9秒。我们做了一个大约100(!)往返(创建一棵树)的表格,并把它缩小到不到5 - 谈论“花费时间”到“在那里”。加上它是异步的,对不起。

进而实现移动大量数据的速度很慢,除非你有瞬间的高带宽连接。

这是异步完成的异步 - 如果您有无法优化的传输时间或延迟时间问题,并且不想使用异步,请继续提供糟糕的体验。

+0

TomTom在这里显得有些sn but,但他提出了很好的建议(考虑到有限的信息,减少往返将成为您的最大收获,去网络服务将是一大收获,减少数据量也将有助于不做选择*,只需获取所需的列,如果数据量很大,则向Web服务调用添加压缩)。 –

2

可以异步执行的SQL调用,并让微软处理后台进程。

http://msdn.microsoft.com/en-us/library/7szdt0kc.aspx

请注意,这并不从SQL Server减少响应时间,因为你必须尽量提高你的网络速度或增加您的SQL语句的性能。

+0

我不想因为形式要等到执行完成,我希望减少从SQL服务器的响应时间异步执行SQL调用,谢谢你的好意 –

+0

没有看到的SQL代码,表索引等无法提供帮助。 –

+0

@Michaelharris如果您必须等待响应,并且无法使服务器本身更快(例如更快的存储),那么您将陷入困境:您无法更改物理定律。 – Richard

1

有几件事情你可能做的加快速度,但它是很难没有看到代码的说。

  1. 如果您正在使用通用的刀片 - 开始使用存储过程
  2. 如果您关闭然后每命令后,连接...好不要。建立连接通常是“更昂贵”的操作之一
  3. 增加两者之间的管道。
  4. 添加一个索引
  5. 调查你的SQL Server也许它不是一个优选的方式设置。
相关问题