MySql 连接未使用 .net MySql 连接器关闭

Posted

技术标签:

【中文标题】MySql 连接未使用 .net MySql 连接器关闭【英文标题】:MySql Connection not closing using .net MySql Connector 【发布时间】:2014-08-17 16:25:00 【问题描述】:

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");
        

【问题讨论】:

这是一个 ASP.NET 应用程序吗?您是否启用了连接缓存? 听起来像是在使用连接池。 【参考方案1】:

您的连接正在添加到连接池中,此功能默认开启,因此每当连接关闭时,它都会添加到连接池中。您可以通过连接字符串参数Pooling=false 或静态方法MySqlConnection.ClearPool(connection)MySqlConnection.ClearAllPools() 来解决此问题...

来自Official Documentation

Connector/Net 支持连接池,以提高数据库密集型应用程序的性能和可扩展性。这是默认启用的。您可以使用连接字符串选项 Pooling、Connection Reset、Connection Lifetime、Cache Server Properties、Max Pool Size 和 Min Pool Size 将其关闭或调整其性能特征。

连接池的工作原理是在客户端处理 MySqlConnection 时保持与服务器的本机连接。随后,如果打开了一个新的 MySqlConnection 对象,它将从连接池中创建,而不是创建一个新的本机连接。这提高了性能。

【讨论】:

以上是关于MySql 连接未使用 .net MySql 连接器关闭的主要内容,如果未能解决你的问题,请参考以下文章

用C#.net连接MYSQL,怎么连接?还要安装啥吗?急!!!

可怕的 Java Spring Boot 应用程序未使用 Docker-compose java.net.ConnectException 连接到 MySQL:连接被拒绝

.NET CORE MySql MaxPoolSize 未应用

查看mysql连接数和状态

Java MySQL连接未关闭

Mysql:使用左连接选择未按预期工作