1

我想知道连接到数据库的性能。关闭每个查询之间的数据库连接是否可以,或者我应该尝试将其保持打开状态直到完成?打开/关闭连接的速度惩罚高吗?

4

3 回答 3

6

ADO.NET 将为您“汇集”连接。当你关闭一个连接时,它并没有真正关闭,而是放在一个池中。当使用相同的连接字符串请求新连接时,池中的连接将被重用。池是如此之快,以至于在实践中,打开连接几乎是免费的。

最佳做法是在需要时打开连接,然后在以下情况下立即关闭:

using (var db = new SqlConnection(connectionString)) {
    ... retrieve data ...
}

如果你这样编码,你根本不必担心连接寿命。

于 2012-06-24T15:47:39.120 回答
2

由于与创建、打开和关闭连接相关的开销(其中一些甚至在使用连接池的情况下),理想情况下,您应该连接一次,检索所有数据,然后关闭并释放连接。您应该确保使用该using方法,以免无意间让连接打开的时间过长。

于 2012-06-24T15:48:02.807 回答
1

根据我的经验,打开和关闭连接是有好处的,low volume application但是high volume application打开和关闭连接的成本变得很重要。因此,它完全依赖于上下文。在为大型应用程序工作时,连接池会发挥作用。ADO.NET绝对处理连接池。

于 2012-06-24T15:57:26.593 回答