2011-12-28 196 views
1

版本6.4.4:MySQL的淨連接池connection.Open()很慢

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

     } 
    } 
} 

回答

1

MySQL's homepage他們寫的,你應該避免創建,打開和關閉連接對象youself,而應該使用助手類應該工作通過連接池更好。

我沒有測試過,但是是我剛纔讀:)

+0

我知道你在談論的信息。他們的建議是不創建自己的MySqlConnection()對象,而是使用MySqlConnection(connectionString)重載。池由不同的連接字符串管理。 – TexasViking 2011-12-29 04:33:26

+0

@TexasViking你認爲它是服務器/網絡是bootleneck而不是連接器嗎? – aweis 2011-12-29 13:52:22

+0

我已經考慮過了。我打算今天在本地安裝mysql來測試這個理論。但是,當我刪除「自定義」連接字符串池設置時,我幾乎可以立即創建連接。 – TexasViking 2011-12-29 15:50:16

0

的問題也存在於我們與MySQL連接的.Net 6.6.5側。 MySql Connector .Net 6.8.3正在解決這個問題。

法布里斯