| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 数据库 > SQL Server教程 > 文章正文 用户登录
免费5G/PHP/mysql
XMLSocket 渐进 (
Flash声音高级篇:
Java与flash的TCP
local shared对象
mx.utils 包 [1] 
mx.utils 包 [2] 
mx.utils 包 [3] 
mx.utils 包 [4] 
Flex-Jsp-Mysql简

SQL Server 中死锁产生的原因及解决办法           

SQL Server 中死锁产生的原因及解决办法

作者:佚名 来源:不详 更新:2006-8-25 21:05:35 错误报告 我要投稿
其实所有的死锁最深层的原因就是一个:资源竞争
  表现一:
  一个用户A 访问表A(锁住了表A),然后又访问表B
  另一个用户B 访问表B(锁住了表B),然后企图访问表A
  这时用户A由于用户B已经锁住表B,它必须等待用户B释放表B,才能继续,好了他老人家就
  同样用户B要等用户A释放表A才能继续这就死锁了
  解决方法:
  这种死锁是由于你的程序的BUG产生的,除了调整你的程序的逻辑别无他法
  仔细分析你程序的逻辑,
  1:尽量避免同时锁定两个资源
  2: 必须同时锁定两个资源时,要保证在任何时刻都应该按照相同的顺序来锁定资源.
  表现二:
  用户A读一条纪录,然后修改该条纪录
  这是用户B修改该条纪录
  这里用户A的事务里锁的性质由共享锁企图上升到独占锁(for update),而用户B里的独占
  放掉共享锁,而A由于B的独占锁而无法上升的独占锁也就不可能释放共享锁,于是出现了
  这种死锁比较隐蔽,但其实在稍大点的项目中经常发生。
  解决方法:
  让用户A的事务(即先读后写类型的操作),在select 时就是用Update lock
  语法如下:
  select * from table1 with(updlock) where ....
文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。