2011-12-28 242 views
1

バージョン6.4.4:MySqlConnectionにの最も基本的な実装を使用してMySQLのネット接続プールconnection.Open()非常に遅い

到達するために接続プールをプリロードする場合、次のコードは、接続ごとに2〜5秒かかります私の接続文字列に "Min Pool Size"が設定されています。

長すぎる、修正する方法、または回避策がある理由は何ですか?

接続文字列:MySQL's homepage

<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(); 
      } 

     } 
    } 
} 

答えて

1

彼らは代わりにあなたが働くべきヘルパークラスを使用する必要があり、あなたが接続オブジェクトにyouselfを作成、開閉避けるべきであることを書きますコネクションプーリングでうまくいく。私はそれをテストしたが、私はちょうど読んものだったしていない:)

+0

あなたが話している情報を知っています。彼らの提案は、独自のMySqlConnection()オブジェクトを作成するのではなく、代わりにMySqlConnection(connectionString)オーバーロードを使用することです。プーリングは別個の接続文字列によって管理されます。 – TexasViking

+0

@TexasVikingあなたはコネクターではなく、ブートネックであるサーバー/ネットワークだと考えましたか? – aweis

+0

私はそれを考えました。私はその理論をテストするために今日mysqlをローカルにインストールすることを計画していました。しかし、「カスタム」接続文字列プーリング設定を削除すると、ほとんど即座に接続を作成できます。 – TexasViking

0

問題を

は、MySQLコネクタの.Net 6.6.5で、私たちの側にも存在しました。 MySql Connector .Net 6.8.3はこの問題を解決しています。

ファブリス