多线程环境下对数据库进行添加,删除,修改操作会早成数据库死锁吗?

时间:2021-10-28 07:31:40
多线程环境下对数据库进行添加,删除,修改操作会早成数据库死锁吗?

如果会,该如何解决呢?

12 个解决方案

#1


不会,数据库有自己的排队机制的

#2


java里有实现线程同步的方法,保证一次只有一个线程执行

#3


如果程序写得不合理是会的,
我就遇到过

#4


应该会有这种情况发生


在多线程的程序中要处理完善

#5


与数据库也有关系
如果程序写得不好,像sybase,sqlserver就容易死锁,因为它们是基于页面的
像oracle就好得多,因为它的锁是基于列的

#6


一般来讲是不会的,是会排队的,但是有一种情况是肯定会出现死锁的

while(ture){

 线程1;
 线程2;
 ....

}



====目前尚在广州打铁,欢迎批评指证====

#7


很少出现的

#8


哦,谁能说的详细一些

#9


为什么不用Statement.excueteBatch()呢?

#10


举个例子,会不会有这种情况
线程a : 启动事物, 更新表a ,  请求表b ,结束事物
线程b : 启动事物, 更新表b , 请求表a ,结束事物

两个线程会不会形成互相等待的局面,造成死锁

#11


学习,哪位大虾的答案是正确的啊?

#12


当死锁发生时,用户收到如下错误。

Transaction (Process ID xxx) was deadlocked on (xxx) resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

错误标识出事务在其上被锁定的资源。该资源可以是锁、并行(或通讯缓冲区)、等待线程或它们之间的组合。

要解决死锁,就必须终止循环中的一个参与者。选取死锁牺牲品时,Microsoft® SQL Server™ 2000 会查看所有的参与线程以及每个线程做了多少工作。通常,SQL Server 会选择工作量最小的参与线程作为死锁牺牲品。

象sqlServer这种商业性数据库应该不会解决不了死锁吧,除非创造死锁的速度超过解锁的速度

#1


不会,数据库有自己的排队机制的

#2


java里有实现线程同步的方法,保证一次只有一个线程执行

#3


如果程序写得不合理是会的,
我就遇到过

#4


应该会有这种情况发生


在多线程的程序中要处理完善

#5


与数据库也有关系
如果程序写得不好,像sybase,sqlserver就容易死锁,因为它们是基于页面的
像oracle就好得多,因为它的锁是基于列的

#6


一般来讲是不会的,是会排队的,但是有一种情况是肯定会出现死锁的

while(ture){

 线程1;
 线程2;
 ....

}



====目前尚在广州打铁,欢迎批评指证====

#7


很少出现的

#8


哦,谁能说的详细一些

#9


为什么不用Statement.excueteBatch()呢?

#10


举个例子,会不会有这种情况
线程a : 启动事物, 更新表a ,  请求表b ,结束事物
线程b : 启动事物, 更新表b , 请求表a ,结束事物

两个线程会不会形成互相等待的局面,造成死锁

#11


学习,哪位大虾的答案是正确的啊?

#12


当死锁发生时,用户收到如下错误。

Transaction (Process ID xxx) was deadlocked on (xxx) resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

错误标识出事务在其上被锁定的资源。该资源可以是锁、并行(或通讯缓冲区)、等待线程或它们之间的组合。

要解决死锁,就必须终止循环中的一个参与者。选取死锁牺牲品时,Microsoft® SQL Server™ 2000 会查看所有的参与线程以及每个线程做了多少工作。通常,SQL Server 会选择工作量最小的参与线程作为死锁牺牲品。

象sqlServer这种商业性数据库应该不会解决不了死锁吧,除非创造死锁的速度超过解锁的速度