我有一个asp.net mvc网站,它为每个页面运行多个查询。我应该打开一个连接还是打开并关闭每个查询中的连接?什么是最佳的数据库连接策略
回答
这其实并不重要。当您使用ADO.NET(其中包括Linq to SQL,NHibernate和任何其他ORM)时,该库使用连接池。您可以“关闭”并“重新打开”逻辑连接十几次,但同一个连接将始终保持打开状态。所以不要过多关心连接是否打开或关闭。
相反,您应该尝试限制每页必须运行的查询数,因为每次往返都会产生大量开销。如果您在每个页面上显示相同的数据,请缓存结果,并设置缓存依赖性或到期日期,如果它不经常更改。还可以尝试通过使用适当的连接和/或急切的加载来重用查询数据(如果您使用的是延迟加载的ORM)。
即使数据在每次页面加载时都会完全不同,您将通过使用返回多个结果集的单个存储过程获得更好的性能,而不是单独运行每个查询。
底线:忘掉连接策略并开始担心查询策略。每页超过3-5个查询,您可能会遇到严重的规模问题。
如果您确信交易将很快完成,那么请使用单个连接。
务必检查所有返回结果并在可能的情况下将所有内容都包含在异常处理中。
为避免不必要的开销,最好使用单个连接。但一定要在“try”块中运行查询,并在“finally”块中关闭连接,以确保不会挂起连接。
或使用'using'语句 – 2010-06-12 13:53:08
的UnitOfWork ??这是一个很好的策略。 nhibernate和许多其他人使用这种模式。
给它一个满足您的要求具体细节一个谷歌..
吉姆
如果您在ADO.NET的常规页面上运行多个查询,那么它们将按顺序运行,并且连接池将意味着它无关紧要。最佳做法是按需打开连接并立即关闭连接 - 即使是在同一页面中进行多个查询。连接池使得这个效率很高。
当您使用多个查询时,通过同时打开多个连接并使用异步ADO来确保所有请求在多个线程中同时运行,可以显着提高性能。在这种情况下,您需要每个查询的连接。但整体连接时间会缩短。
在单一连接上也可能使用MARS,但我并不是那种支持者,并且在功能上受到很多限制。
- 1. 保留大数据集的最佳策略是什么?
- 2. 在c#中连接数据库的最佳方式是什么?
- 3. 连接到SQL数据库的最佳实践是什么?
- 4. 在php中连接数据库的最佳方法是什么?
- 5. 连接android和oracle数据库的最佳方式是什么?
- 6. 分组链接用户的最佳策略是什么
- 7. 从我的客户端连接到我的数据库的最佳策略
- 8. H2数据库 - 并发连接策略
- 9. 什么是Android的最佳数据库?
- 10. 在限制性IT策略下安装cygwin的最佳策略是什么?
- 11. 数据库连接池库的最佳选择是什么? (c3p0问题)
- 12. 摆脱“警告C4267可能的数据丢失”的最佳策略是什么?
- 13. 连接暂停后,GoogleApiClient重新连接策略是什么?
- 14. 每次迭代保存模拟数据的最佳策略是什么?
- 15. 什么是支持.NET 3.0和.NET 4.0的最佳策略?
- 16. 用PHP更新mysql行的最佳策略是什么?
- 17. Python/MySQL组合的最佳转义字符策略是什么?
- 18. 构建XACML策略的最佳实践是什么?
- 19. 什么是依赖注入用户输入的最佳策略?
- 20. 使用nvidia-smi什么是捕获能量的最佳策略
- 21. 使用XACML3.0创建策略的最佳方式是什么?
- 22. 调试SSRS的最佳策略是什么?
- 23. 测试D3/HighCharts/SVG的最佳策略是什么?
- 24. 什么是在Visual C#中遵循的最佳调试策略?
- 25. 什么是使ORM缓存无效的最佳策略?
- 26. 什么是Spring安全会话认证的最佳策略
- 27. 同时取消多个页面的最佳策略是什么?
- 28. vim中代码块和宏的最佳策略是什么?
- 29. 什么是GAE的最佳迁移策略CloudSQL
- 30. 日志分析应用程序的最佳策略是什么
@should我只是存储一个缓存的连接对象 – leora 2010-06-12 14:07:33