多线程访问同一个数据库,需要加锁么

多线程访问同一个数据库,需要加锁么,第1张

线程访问数据库,其中有一个线程会长时间占用数据库。这个线程是独立线程,另外有一个线程池也会访问数据库,这个线程池中的线程我用lock锁住数据库了,但是由于独立线程和线程池线程不在同一个方法中,所以访问数据库的时间不同,用lock只能对线程池线程有效 回答: 你这么讲一定能保证两个线程不会在一个时刻共同发起对数据库的访问么?除非你做了很多同步让两个线程都按照你设计的逻辑不发生访问数据库的冲突,否则你必须加锁。看你的说明,你应该没加同步,所以他会出现冲突,你不能缺锁,他是共享资源的访问了

多线程 *** 作,请确保每个线程 *** 作的SQL语句中的表是相对独立的。 不然,你需要安排线程间的顺序,也就是lock代码段。 同一时间,两个线程一起跑同一句SQL,而且还 *** 作同一张表,那么,肯定就会有问题了。

一般这种是因为超出数据库最大链接上限。再建立链接,不管缓存多少,会自动队列消息等待。Timeout时间内没有链接取消无法获得链接权限。可以将自己的数据库链接个数设置大一些。

可以用VS的Integration Services项目,速度挺快的,还不用写代码。 要提升速度还可以用多个读线程和写线程,不过要注意的是同一时刻只能有一个线程插入一个表,比如thread1插入表A,thread2这时候只能插入表B,不能插入表A。 这里的能不能是从性能的角度上说的,本身不会出错,但多个线程插入同一张表速度反而会下降,而且降的很厉害。 这两个性能差不多,IS也可以并行转移多张表,只是IS只要一条记录出问题整个任务就失败全部回滚,而编程则处理可以更灵活。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6701035.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存