Sql server 什么是最佳的数据库连接策略

Sql server 什么是最佳的数据库连接策略,sql-server,asp.net-mvc,ado.net,connection-pooling,Sql Server,Asp.net Mvc,Ado.net,Connection Pooling,我有一个asp.NETMVC网站,它为每个页面运行许多查询。我应该在每个查询上打开一个连接还是打开和关闭一个连接?如果您非常确定事务会很快完成,那么使用一个连接 请确保检查所有返回结果,并尽可能将所有内容包装在异常处理中。如果您非常确定事务将很快完成,请使用单个连接 确保检查所有返回结果,并尽可能将所有内容包装在异常处理中。为了避免不必要的开销,最好使用单个连接。但请确保在“try”块中运行查询,并在“finally”块中关闭连接,以确保不会使连接挂起 为了避免不必要的开销,最好使用单一连接。但

我有一个asp.NETMVC网站,它为每个页面运行许多查询。我应该在每个查询上打开一个连接还是打开和关闭一个连接?

如果您非常确定事务会很快完成,那么使用一个连接


请确保检查所有返回结果,并尽可能将所有内容包装在异常处理中。

如果您非常确定事务将很快完成,请使用单个连接


确保检查所有返回结果,并尽可能将所有内容包装在异常处理中。

为了避免不必要的开销,最好使用单个连接。但请确保在“try”块中运行查询,并在“finally”块中关闭连接,以确保不会使连接挂起


为了避免不必要的开销,最好使用单一连接。但请确保在“try”块中运行查询,并在“finally”块中关闭连接,以确保不会使连接挂起


工作单元??这是一个很好的策略。nhibernate和许多其他人使用这种模式

在谷歌上搜索与您需求相关的具体细节


吉姆

工作单位??这是一个很好的策略。nhibernate和许多其他人使用这种模式

在谷歌上搜索与您需求相关的具体细节


吉姆

这真的没关系。当您使用ADO.NET(包括Linq to SQL、NHibernate和任何其他ORM)时,该库使用连接池。您可以多次“关闭”和“重新打开”逻辑连接,但相同的物理连接将始终保持打开状态。因此,不要太在意连接是打开还是关闭

相反,您应该尝试限制每页必须运行的查询数量,因为每次往返都会产生大量开销。如果您在每个页面上显示相同的数据,请缓存结果,如果不经常更改,请设置缓存依赖项或过期。还可以尝试通过使用适当的联接和/或即时加载(如果您使用的是延迟加载的ORM)来重用查询数据

即使每次页面加载时数据总是完全不同,但与单独运行每个查询相比,使用返回多个结果集的单个存储过程将获得更好的性能


一句话:忘记连接策略,开始担心查询策略。每页超过3-5个查询,您可能会遇到严重的规模问题。

这真的没关系。当您使用ADO.NET(包括Linq to SQL、NHibernate和任何其他ORM)时,该库使用连接池。您可以多次“关闭”和“重新打开”逻辑连接,但相同的物理连接将始终保持打开状态。因此,不要太在意连接是打开还是关闭

相反,您应该尝试限制每页必须运行的查询数量,因为每次往返都会产生大量开销。如果您在每个页面上显示相同的数据,请缓存结果,如果不经常更改,请设置缓存依赖项或过期。还可以尝试通过使用适当的联接和/或即时加载(如果您使用的是延迟加载的ORM)来重用查询数据

即使每次页面加载时数据总是完全不同,但与单独运行每个查询相比,使用返回多个结果集的单个存储过程将获得更好的性能


一句话:忘记连接策略,开始担心查询策略。如果每页查询超过3-5个,则可能会遇到严重的规模问题。

如果在常规ADO.NET中在一个页面上运行多个查询,则它们会按顺序运行,连接池将意味着这不重要。最佳实践是按需打开连接并立即关闭它们,即使是在同一页面中进行多个查询。连接池使得这相当有效

当您使用多个查询时,通过同时打开多个连接并使用异步ADO来确保所有请求在多个线程中同时运行,可以显著提高性能。在这种情况下,每个查询都需要一个连接。但总的连接时间将减少


在单个连接上也可以使用MARS,但我不是这方面的大力支持者,而且它的功能更有限。

如果在常规ADO.NET中在一个页面上运行多个查询,那么它们是按顺序运行的,连接池将意味着这不重要。最佳实践是按需打开连接并立即关闭它们,即使是在同一页面中进行多个查询。连接池使得这相当有效

当您使用多个查询时,通过同时打开多个连接并使用异步ADO来确保所有请求在多个线程中同时运行,可以显著提高性能。在这种情况下,每个查询都需要一个连接。但总的连接时间将减少


在单个连接上也有可能使用MARS,但我不是这方面的大力支持者,而且它的功能更加有限。

@我应该只存储一个缓存连接吗object@should我只是存储一个缓存的连接对象