2011-12-28 2 views
1

버전 6.4.4 다음에 도달하기 위해 연결 풀을 사전로드 할 때MySQL의 닷넷 연결 풀 connection.Open() 매우 느린

MySqlConnection의 가장 기본적인 구현을 사용하여 다음 코드는 연결 당 2~5초 소요 내 연결 문자열에 "최소 풀 크기"가 구성되었습니다.

오랜 시간이 걸리는 이유, 해결 방법 또는 해결 방법에 대한 아이디어가 있습니까?

연결 문자열 : 작동해야하는 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의 커넥터 닷넷 6.6.5 우리의 측면에 존재 것이었다하지 않았습니다. MySql Connector .Net 6.8.3이이 문제를 해결하고 있습니다.

Fabrice