我创建了一个 vb.net 应用程序,它通过 Internet 在远程位置使用 SQL Server 数据库。
有 10 个 vb.net 客户端同时工作。
问题在于插入新行或从数据库中检索行时发生的延迟时间,表单在处理数据库时似乎冻结了一段时间,我不想使用后台工作人员来克服冻结问题。
我想消除延迟时间并尽可能减少它
欢迎任何提示,建议或信息,在此先感谢
我创建了一个 vb.net 应用程序,它通过 Internet 在远程位置使用 SQL Server 数据库。
有 10 个 vb.net 客户端同时工作。
问题在于插入新行或从数据库中检索行时发生的延迟时间,表单在处理数据库时似乎冻结了一段时间,我不想使用后台工作人员来克服冻结问题。
我想消除延迟时间并尽可能减少它
欢迎任何提示,建议或信息,在此先感谢
嗯,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 次 - 谈论“需要时间”到“哇,那里”。再加上它是异步的,对不起。
然后意识到移动大量数据很慢,除非你有即时的高带宽连接。
这正是异步的作用——如果您有无法优化的传输时间或延迟时间问题,并且不想使用异步,请继续提供糟糕的体验。
您可以异步执行 SQL 调用,让 Microsoft 处理后台进程。
http://msdn.microsoft.com/en-us/library/7szdt0kc.aspx
请注意,这不会减少 SQL 服务器的响应时间,因为您必须尝试提高网络速度或提高 SQL 语句的性能。
您可能会做一些事情来加快速度,但是如果没有看到代码就很难说。