当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:21:00  来源:本站整理

SQL Server 中死锁产生的缘由及办理办法[MSSQL防范]

赞助商链接



  本文“SQL Server 中死锁产生的缘由及办理办法[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
其实全部的死锁最深层的缘由就是一个:资源竞争
表现一:
    一个用户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有同享锁存在所以必须等A释
放掉同享锁,而A由于B的独占锁而无法上升的独占锁也就不大概释放同享锁,于是呈现了死锁.
    这种死锁对比躲藏,但其实在稍大点的项目中常常发生.
办理办法:
    让用户A的事件(即先读后写范例的操作),在select 时就是用Update lock
    语法以下:
    select * from table1 with(updlock) where ....www.c hinaitpower.comlWOfnU

  以上是“SQL Server 中死锁产生的缘由及办理办法[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Windows 搭配 IIS7 PHP MySQL 环境
  • sqlserver索引的原理及索引成立的注意事项小结
  • SQL Join的一些总结(实例)
  • SQL的Join利用图解教程
  • SQL中JOIN和UNION辨别、用法及示例介绍
  • 关于SQL中CTE(公用表表达式)(Common Table Expression)的总结
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .