在我的应用程序中,我使用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连接器在不同线程之间共享一个连接的正确方法?
答案 0 :(得分:4)
使用dev mysql连接器在不同线程之间共享一个连接的正确方法是什么?
唐'吨。每个线程都有不同的连接。
应该汇集连接,所以当你打开一个新连接时,它不会实际上打开一个新的连接,它只是打开一个开放的从泳池连接。
因为没有理由在线程之间共享这种长期存在的连接。只需为每个逻辑事务的范围创建一个新连接,并让连接池处理其余事务。