我继承了一个支持基于 .NET 和 SQL Server 2008 R2 的解决方案。
该体系结构使得所有客户端必须彼此保持同步,这由一个 winsock 集线器处理,每个客户端都向该集线器发送和接收所做更改的通知。这些通知采用更新类型和关键字段的形式。
收到通知后,客户端窗口检查更新类型,如果他们认为感兴趣,则发出数据库命令(存储过程)以检索该键值的最新数据。通常调用的存储过程链接多个表以返回一个相当大的对象。
我的问题是,当许多客户端处于活动状态时,它们会在“同一”时间调用相同的存储过程并降低性能,例如 < 1 秒的查询,当单独调用时可能需要 c20 秒,因为它可能会等待其他客户端完全的。
SQL Server 中有什么开箱即用的东西可以帮助我解决这个问题吗?我正在考虑缓存结果或阻止一个查询阻塞另一个查询的方法?
我很欣赏我可能应该对客户端代码和通知过程进行一些更改以传递完全填充的对象,从而消除多次询问数据库的需要。然而,这是一个生命周期有限的遗留应用程序,以如此重要的方式升级将是一件令人头疼的事情。如果我可以使用 SQL Server 中有一个不错的简单开关,那将为我赢得所需的时间!
谢谢,安德鲁