如何在多个线程之间共享一个mysql连接?

时间:2013-10-18 20:36:42

标签: c# mysql multithreading

在我的应用程序中,我使用dev.mysql.com的Mysql.Data连接器写入我的mysql数据库,我希望最大限度地提高性能,所以我不想打开许多MySql连接。但最终当我尝试使用一个像这样的全局静态连接时:

MySqlConnection connect = new MySqlConnection(connectionString);

connect.Open();
StaticData.mysqlConnect = connect;

...


// in my threads
lock (StaticData.mysqlConnect)
{
  foreach (Object param in records)
  {
      using (MySqlCommand command = conn.CreateCommand())
      {
        command.CommandText = "some request";
        //...                   
        command.ExecuteNonQuery();  
      }
  }
}

我收到了System.Threading.SynchronizationLockException。所以我的问题是:什么是使用dev mysql连接器在不同线程之间共享一个连接的正确方法?

1 个答案:

答案 0 :(得分:4)

  

使用dev mysql连接器在不同线程之间共享一个连接的正确方法是什么?

唐'吨。每个线程都有不同的连接。

应该汇集连接,所以当你打开一个新连接时,它不会实际上打开一个新的连接,它只是打开一个开放的从泳池连接。

因为没有理由在线程之间共享这种长期存在的连接。只需为每个逻辑事务的范围创建一个新连接,并让连接池处理其余事务。