MySQL .Net соединение с пулом соединений. Open () очень медленно - PullRequest
1 голос
/ 29 декабря 2011

Версия 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 ]

1 голос
/ 29 декабря 2011

На на домашней странице MySQL пишут, что вам следует избегать создания, открытия и закрытия объекта подключения самостоятельно, вместо этого вы должны использовать вспомогательный класс, который должен лучше работать с пулом соединений.

Я не проверял это, но кое-что я только что прочитал:)

0 голосов
/ 18 февраля 2014

Эта проблема также присутствовала на нашей стороне с MySql Connector .Net 6.6.5.MySql Connector .Net 6.8.3 решает эту проблему.

Фабрика

...