如何在多个线程之间共享一个 mysql 连接
本文关键字:一个 连接 mysql 之间 线程 共享 | 更新日期: 2023-09-27 18:36:09
在我的应用程序中,我正在使用来自 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 连接器在不同线程之间共享一个连接的正确方法是什么?
使用 Dev MySQL 连接器在不同线程之间共享一个连接的正确方法是什么?
不要。 在每个线程上具有不同的连接。
连接应该是池化的,所以当你打开一个新连接时,它实际上不会打开一个新连接,它只是从池中获取一个打开的连接。
因此,没有理由在线程之间共享如此长期的连接。 只需为每个逻辑事务的范围创建一个新连接,让连接池处理其余的工作。