从db收集数据的最快方法?

时间:2011-11-10 05:00:23

标签: c# performance ado.net ado.net-entity-data-model

在C#上工作。在我的应用程序中,需要多次选择\从DB收集数据.Fro这个任务我做了以下步骤

1)Write SP 
2)Execute the Sp 
3)Fill result to Generic collection(ORM)
4)By the collection Bind the control

我想知道是否有任何机制或技术\可用的高级技术有助于从数据库中收集数据。提前谢谢

2 个答案:

答案 0 :(得分:1)

  

当我一次又一次地快速击中db时,它的性能就成了瓶颈。怎么办?

听起来你应该缓存一些结果。在高负载应用程序中,即使几秒钟的缓存也会对性能产生很大影响。那里有无数的缓存解决方案;如果这是一个Web应用程序,内置的http-context .Cache应该没问题(.NET 4.0添加MemoryCache以便在非Web应用程序中更方便地执行相同操作。)

重新加载数据;你提到ORM - 根据我们的经验,我们发现大多数ORM确实是“热门”代码路径的瓶颈 - 这是我在几个小时内讨论的主题。因为我们遇到了这个问题,所以我们写了一个故意简单但非常真正 micro-ORM dapper-dot-net。它不像某些完整的ORM那样功能丰富,但如果您尝试快速加载数据以进行显示,那么它是理想的。


另一方面,当然是查看您的查询并提高性能。特别注意逻辑IO读取以及它们的来源。很可能一个额外的索引或一点点非规范化可能会对您的查询性能产生很大的影响。

答案 1 :(得分:0)

是的,但唯一的例外是使用DataReader或DataTable。

对于前。 datareader对于从正在检索的大型集合中的行的有限视图非常有用。

但是,如果要在完整的数据集上应用函数,则数据表很重要。

此外,还有不同的方法,如连接池,本地视图,当获取的数据超过可用的服务器资源时,这些方法最重要。