【发布时间】:2014-07-15 21:13:44
【问题描述】:
对于多线程应用程序的最佳做法是(1) 使用到 SQL 数据库的单个共享静态连接还是 (2 ) 让每个 BackgroundWorker 打开自己唯一的数据库连接?
我显然假设每个线程都需要连接到同一个数据库。
使用类型会影响答案吗?例如,如果每个线程只运行 SELECT 语句怎么办?或者如果某些线程也可以执行 UPDATE 语句?或者使用情况并没有真正产生影响,无论如何您都应该/永远不要共享静态连接?
【问题讨论】:
-
最好使用连接池,所有线程安全都已经完成。迄今为止最好的选择。
-
当然,即使使用它,您仍然可以获得表锁。对你的数据库脚本要聪明一点。 sql sever 也有很好的并发处理方式
-
后台线程上的多个独立并发连接听起来确实很可怕。
-
哪个数据库?有些,如 MS Access 或 Jet,无法处理并发更新。请注意,您不需要静态连接来序列化并发更新。
-
具体来说是 SQL Server 2012!
标签: c# database multithreading sql-server-2012 backgroundworker