建立与数据库的连接的开销

时间:2012-06-24 15:42:55

标签: c# asp.net sql-server

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

3 个答案:

答案 0 :(得分:4)

ADO.NET将为您“汇集”连接。当您关闭连接时,它并未真正关闭,而是放在池中。当使用相同的连接字符串请求新连接时,将重用池中的连接。游泳池非常快,实际上,打开连接几乎是免费的。

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

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

如果您这样编码,则根本不必担心连接生存期。

答案 1 :(得分:2)

由于存在与创建,打开和关闭连接相关的开销(即使使用连接池,其中一些连接),理想情况下应连接一次,检索所有数据,然后关闭并处理连接。您应该确保使用using方法,这样您就不会无意中将连接打开的时间超过必要的时间。

答案 2 :(得分:1)

根据我的经验,连接的打开和关闭对low volume application有利,但对于high volume application,打开和关闭连接的成本变得很大。因此,entirley依赖于上下文。在为大型应用程序工作时,Connection pooling变得棘手。ADO.NET肯定会处理连接池。