用户注册  登录  购物车  我的订单  帮助中心  客户反馈

客服热线:(0592)8636830
网站首页 金蝶 速达 晋新软件 管家婆 金万维 模板建站 新闻资讯 报价单

请选择分类: 金蝶KIS  3000系列  5000系列  7000系列  财务系列  行业软件  其它  晋业服装  晋业通系列  晋业连锁超市  

2013-11-18 星期一 高级/组合搜索
给我发消息

技术支持1

给我发消息

技术支持2

 隐藏
所有新闻
站内新闻
站内新闻
解决方案
典型客户
行业新闻
技术支持
技术文章(软件)
技术文章(网站)
其它
财务知识
SQL Server死锁产生原因及解决办法

作者:  转载自:  发布日期:2009-7-31

  其实所有的死锁最深层的原因就是一个:资源竞争 }p!h gr HRnIAhdS

  表现一:2 ?)! q~CzG__BE.9|

  一个用户A 访问表A(锁住了表A),然后又访问表B,另一个用户B 访问表B(锁住了表B),然后企图访问表A,这时用户A由于用户B已经锁住表B,它必须等待用户B释放表B,才能继续,好了他老人家就只好老老实实在这等了,同样用户B要等用户A释放表A才能继续这就死锁了。b\'*"kSOX@nnHEe

  解决方法:8?E:3Yj8).hI-G"/g

  这种死锁是由于你的程序的BUG产生的,除了调整你的程序的逻辑别无他法s*cp'd"@=;yIn@l

  仔细分析你程序的逻辑:](q�I)(y=W^[df=s

  1:尽量避免同时锁定两个资源BZ'Xp=N tiK:#^} N=

  2: 必须同时锁定两个资源时,要保证在任何时刻都应该按照相同的顺序来锁定资源.=U^0N#+d^9*EAb{ 

  表现二:V(% MLoG ?yX((5^ F

  用户A读一条纪录,然后修改该条纪录。这是用户B修改该条纪录,这里用户A的事务里锁的性质由共享锁企图上升到独占锁(for update),而用户B里的独占锁由于A有共享锁存在所以必须等A释放掉共享锁,而A由于B的独占锁而无法上升的独占锁也就不可能释放共享锁,于是出现了死锁。,#\]Q-,N�6k#nK2XKa

  这种死锁比较隐蔽,但其实在稍大点的项目中经常发生。.:Q(.9sQGM"LKpQ

  解决方法:# (+-C?24)J:gy

  让用户A的事务(即先读后写类型的操作),在select 时就是用Update lock pH\tBL*_H=B @

  语法如下:MQQ=-\':?-I:/.tNQK

select * from table1 with(updlock) where ....
+NvgSlC-x0NT?.Q
[版权归原作者及coolcxm共同拥有,转载请注明出处]


常见问题 | 关于我们 | 付款方式 | 送货方式 | 联系我们 |


Copyright © 2007 www.375168.com. All Rights Reserved.版权所有:商启贸易网络购物中心|厦门速达软件|厦门速达软件独立运营商|速达软件经销商|管理软件|财务软件|ERP|厦门网站建设
客户服务热线:(0592)8636830
客户服务邮箱:cxm76@163.com 传真:(0592)2022582
公司详细地址:厦门市育青路31号902室  邮编:361000
闽ICP备07042975号