0

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

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

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

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

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

4

3 回答 3

3

嗯,2个问题:

表单在处理数据库时似乎冻结了一段时间,我不想使用后台工作人员来克服冻结问题。

虚荣、傲慢和现实很少混在一起。任何需要超过 SHORT 时间(0.1-0.5 秒)的操作都应该异步运行,这是保持 UI 响应的唯一方法。不管问题是什么,如果在互联网应用程序上需要更长的时间,请将它们解耦。

但:

问题在于插入新记录或从数据库中检索记录时发生的延迟时间,

那么,问题是什么?严重地。这是延迟问题(往返次数过多,使用更高效的 sql、批处理,因此每次后不发送 20 个 q1uestion 等待结果)还是服务器过载 - 从问题中不清楚这是否真的是延迟问题。

在最后:

我想消除延迟时间

向您信仰的任何神祈祷,以改变物理规则(主要是光速)或向您当地的医生祈祷,最终以低成本获得可行的量子隐形传态。数据包目前需要时间来传输,没有办法改变这一点。

检查您是否使用了太多的往返行程。永远不要(!)通过 SQL 远程使用 sql server - 放入 Web 服务并使其适合应用程序,甚至可能与您的屏幕 1:1 匹配,因此您可以在一次往返中请求数据并发送更新,不是十几个。当我们在 12 年前使用 .NET 中的自定义 ORM 做类似的事情时,我们使用了一个数据访问层,它在一次运行中接受多个查询并为它们返回多个结果集 - 所以一个有 10 个下拉菜单的表单可以要求所有 10 个一次往返的数据集。如果一个请求需要 0.1 秒的互联网时间 - 那么这将节省 0.9 秒。我们有一个包含大约 100 次(!)往返(创建一棵树)的表格,并将其降至不到 5 次 - 谈论“需要时间”到“哇,那里”。再加上它是异步的,对不起。

然后意识到移动大量数据很慢,除非你有即时的高带宽连接。

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

于 2012-05-20T15:37:48.647 回答
2

您可以异步执行 SQL 调用,让 Microsoft 处理后台进程。

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

请注意,这不会减少 SQL 服务器的响应时间,因为您必须尝试提高网络速度或提高 SQL 语句的性能。

于 2012-05-20T14:57:24.120 回答
1

您可能会做一些事情来加快速度,但是如果没有看到代码就很难说。

  1. 如果您使用的是通用插入 - 开始使用存储过程
  2. 如果您在每个命令之后都关闭连接,那么......那么不要。建立连接通常是更“昂贵”的操作之一
  3. 增加两者之间的管道。
  4. 添加索引
  5. 调查您的 SQL Server,也许它没有以首选方式设置。
于 2012-05-20T16:55:32.883 回答