首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql 死锁有关问题求解释

2012-06-01 
sql 死锁问题求解释增设table2(D,E)D Ed1 e1d2 e2在第一个连接中执行以下语句begin tranupdate table1set

sql 死锁问题求解释
增设table2(D,E)  
D E  
d1 e1  
d2 e2  
在第一个连接中执行以下语句  
begin tran  
  update table1  
  set A= 'aa '  
  where B= 'b2 '  
  waitfor delay '00:00:30 '  
  update table2  
  set D= 'd5 '  
  where E= 'e1 '  
commit tran  
   
在第二个连接中执行以下语句  
begin tran  
  update table2  
  set D= 'd5 '  
  where E= 'e1 '  
  waitfor delay '00:00:10 '  
  update table1  
  set A= 'aa '  
  where B= 'b2 '  
commit tran  

同时执行,系统会检测出死锁,并中止进程?
为什么发生死锁,请高手解释,谢谢!

[解决办法]
两个事务中都有update table1
[解决办法]
两个事务都同时请求update同一个表操作,造成相互等待对方释放资源
[解决办法]
update必须等待第一个事务释放共享锁转为排它锁后才能执行.
[解决办法]
连线1,持有table1的锁,申请table2的锁,等待..

连线2,持有table2的锁,申请table1的锁,等待..

俩进程进入互相等待对方资源的状态,所以死锁.
[解决办法]

探讨
引用:
两个事务都同时请求update同一个表操作,造成相互等待对方释放资源


同时update 同一个表的操作这种情况会有吧?
如何改进这种死锁的问题?

热点排行