我有一个Asp.Net webforms页面。我在应用程序的一个复杂页面上的页面上有8个查询。可以缓存2个查询,它们已经被缓存,但另外6个需要命中数据库。页面在2秒内没有任何延迟地加载正常。但是,作为性能的最佳实践,我想知道是否应该使它们异步。问题是如果我将它们设置为异步,则必须为每个查询使用不同的连接,因为当前我将连接对象存储在HttpContext.Current.Items
中,如果我在不同的线程上,这将不可用。
我应该使用Task
api还是仅将它们保持同步?请提出最佳做法。
答案 0 :(得分:1)
在我看来,最好的选择是将这些查询组合在一起。如果完全不可能,至少在sql连接上运行它们。使用async可能不会增加时间,直到你使用共享的sql连接,但我认为这是不可能的。
答案 1 :(得分:1)
如果您希望优化数据库访问时间,请尝试实现Garath和mesterak建议的内容 - 这应该会为您带来额外的性能提升。
但是,我必须说如果我的页面加载到2s以下,我就不会在这方面做任何优化。
在继续处理此问题之前,请先问自己一些问题:
以下是其他一些建议供您尝试:
答案 2 :(得分:0)
我认为这取决于你如何拨打电话。可以创建一个简单的数据库处理类(静态)来建立一个连接,然后执行的任何查询都可以重用相同的连接对象。异步调用只意味着你并行执行它们;这可以改善用户体验(更快的性能),但是对DB的调用次数是相同的。如果您提供有关如何在代码中对数据库执行查询的更多详细信息,也许我们可以更好地回答您的问题。