MySql Connection将进入睡眠模式,而不是在mysql中关闭。我使用MySql.Data 6.5.4版本与mysql进行通信。我不确定我在下面的代码中做错了什么。
try
{
using (var conn = new MySqlConnection(strConnection))
{
conn.Open();
using (var cmd = new MySqlCommand(strSQLStatement, conn))
{
var adapter = new MySqlDataAdapter(cmd);
adapter.Fill(ds);
}
}
}
catch (Exception ex)
{
ErrorLogger.WriteError(string.Format("Failed query {0} with stack trace {1} ", strSQLStatement, ex), "GetData");
}
答案 0 :(得分:3)
您的连接正在添加到连接池中,默认情况下此功能处于启用状态,因此每当连接关闭时,它都会添加到连接池中。您可以通过连接字符串参数Pooling=false
或静态方法MySqlConnection.ClearPool(connection)
和MySqlConnection.ClearAllPools()
解决此问题...
Connector / Net支持连接池,以便在数据库密集型应用程序中获得更好的性能和可伸缩性。默认情况下启用此选项。您可以使用连接字符串选项Pooling,Connection Reset,Connection Lifetime,Cache Server Properties,Max Pool Size和Min Pool Size来关闭它或调整其性能特征。
当客户端处理MySqlConnection时,连接池的工作原理是保持与服务器的本机连接。随后,如果打开一个新的MySqlConnection对象,它将从连接池创建,而不是创建新的本机连接。这样可以提高性能。