.net - sql server连接池




ASP.NET/ADO.NET:处理.NET对象中的许多数据库连接? (3)

我们有一个.NET对象,可以在数据库中进行大量的读写操作。 在整个这个对象(或使用它的asp页面)的整个生命周期中,它可能会用1到10次的查询/更新来访问数据库。

每次对象需要访问数据库时,不必打开和关闭数据库连接,只需在实例化过程中打开与数据库的连接,然后在对象终止事件期间关闭连接。 这是一个不好的做法?

这个假设是,因为对象每次实例化(通常是多次)都会触发数据库,​​所以最好在对象生命周期开始时打开一个连接,然后在最后关闭连接。

另一种方法是在每个查询/操作之前和之后打开和关闭数据库连接。

为了最大化性能,这里最好的做法是什么?

****更新****感谢提示家伙。 任何人都可以多说一些在对象实例化/终止事件中打开/关闭连接的方法,以及这样做的影响吗?


为了增加对连接池参数的信任 - 将连接打开的时间超过所需的时间,实际上会降低整体性能,因为连接池无法将该连接共享到其他需要数据库连接的组件。

所以,是的,根据需要打开和关闭连接。 尽管如此,如果您可以将您的查询批量处理为一个EXEC调用,速度会更快。


每次打开和关闭...在实际执行数据库操作的代码行之前立即打开(尽可能靠近),然后立即关闭。 当你这样做的时候,ADO.net并没有真正关闭连接,只是将它释放回到ADO.net连接池中,并等待下一个使用相同连接字符串的连接请求。 您不会因为每次重新建立连接而感到不安...

唯一的问题是,如果你是异步做这么多的连接尝试,你超过了连接池的最大数量....并有解决这个问题,以及使用System.Threading.ThreadPool类...


根据需要打开关闭连接。 ADO.NET内置了连接池,可以工作。 你不会注意到任何性能问题,除非你正在做这个成千上万的打开/关闭循环。

编辑看看我应该坚持在我的数据访问层的sqlconnection? 有关连接持久性的缺陷的更多信息。





database-connection