在我的应用程序中,我使用来自 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 连接器在不同线程之间共享一个连接的正确方法是什么?
最佳答案
whats the proper way to share one connection between different threads using dev mysql connector?
不要。在每个线程上有不同的连接。
连接应该被池化,所以当你打开一个新连接时,它不会实际上打开一个新连接,它只会从池中获取一个打开的连接。
因此,没有理由在线程之间共享如此长生命周期的连接。只需为每个逻辑事务的范围创建一个新连接,让连接池处理其余部分。
关于c# - 如何在多个线程之间共享一个 mysql 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19458633/