多次打开和关闭SQL连接有多糟糕?有什么确切的效果?

Ere*_*ren 3 sql-server sqlconnection fill sqlperformance sqldataadapter

例如,我需要使用SQLDataAdapter的Fill()方法填充大量DataTable:

DataAdapter1.Fill(DataTable1);
DataAdapter2.Fill(DataTable2);
DataAdapter3.Fill(DataTable3);
DataAdapter4.Fill(DataTable4);
DataAdapter5.Fill(DataTable5);
....
....
Run Code Online (Sandbox Code Playgroud)

即使所有的dataadapter对象都使用相同的SQLConnection,每个Fill方法都会打开和关闭连接,除非在方法调用之前连接状态已经打开.

我想知道的是,如何不必要地打开和关闭SQLConnections会影响应用程序的性能.需要扩展多少才能看到此问题的不良影响(100,000个并发用户?).在中型网站(每天50000个用户)中,是否值得烦恼并搜索所有Fill()调用,将它们保存在代码中并在任何Fill()调用之前打开连接并在之后关闭?

mar*_*c_s 9

ADO.NET具有连接池,例如,当您关闭连接时,它并不是真正完全关闭,但如果您要求使用完全相同的连接字符串的新连接,则"回收".

尽管如此 - 如果你已经提前知道你必须逐个调用这五种填充方法,我肯定会推荐

  • 打开连接
  • 从数据库中读取所有五个数据表
  • 马上再次关闭连接

以这种方式做到这是最好的做法,它不会伤害你 - 所以就这样做吧!:-)

PS:ADO.NET中的连接池当然只有在你没有关闭的情况下才有效!:-)默认情况下它是 - 你必须明确禁用它.