【问题标题】:MySql Connection not closing using .net MySql ConnectorMySql 连接未使用 .net MySql 连接器关闭
【发布时间】: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 应用程序吗?您是否启用了连接缓存?
  • 听起来像是在使用连接池。

标签: c# mysql mysql-connector


【解决方案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 对象,它将从连接池中创建,而不是创建一个新的本机连接。这提高了性能。

【讨论】:

    猜你喜欢
    • 2014-12-18
    • 2013-10-16
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 2016-04-04
    • 1970-01-01
    相关资源
    最近更新 更多