MySQL .Net连接池连接.Open()非常慢

时间:2011-12-28 23:23:41

标签: c# mysql mysql-connector

版本6.4.4:

使用MySqlConnection的最基本实现,在预加载连接池以达到我的连接字符串中配置的“最小池大小”时,以下代码每个连接需要2-5秒。

任何想法为什么需要这么长时间,如何修复或解决方法?

连接字符串:

<add name="users" connectionString="server=192.168.1.2;User Id=dbuser;password=dbpassword;database=users;Pooling=true;Min Pool Size=10;Max Pool Size=50;Persist Security Info=True;" />

代码

private static void MySqlConnectionTester()
{
    string connectionString = ConfigurationManager.ConnectionStrings["users"].ConnectionString;

    using (var connection = new MySqlConnection(connectionString))
    {
        using (var command = connection.CreateCommand())
        {
            command.CommandText = "select * from users;";

            try
            {
                connection.Open(); // This line hangs until "Min Pool Size" is reached.
                using (var reader = command.ExecuteReader())
                {
                    while(reader.Read())
                    {
                        // Read results
                    }
                }
            }
            catch(Exception ex)
            {
                // Log exception
            }
            finally
            {
                connection.Close();
            }

        }
    }
}

2 个答案:

答案 0 :(得分:1)

MySQL's homepage,他们写道你应该避免自己创建,打开和关闭连接对象,而应该使用辅助类,它应该更适合连接池。

我还没有测试过,但我刚才读过这篇文章:)

答案 1 :(得分:0)

MySql Connector .Net 6.6.5也存在这个问题。 MySql Connector .Net 6.8.3正在解决这个问题。

和Fabrice