这篇文章主要介绍sql server中死锁排查的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<强>死锁的四个必要条件:强>
- <李>
互斥条件(互斥):资源不能被共享,只能由一个进程使用。
李> <李>请求与保持条件(持有和等待):已经得到资源的进程可以再次申请新的资源。
李> <李>非剥夺条件(没有优先购买权):已经分配的资源不能从相应的进程中被强制地剥夺。
李> <李>循环等待条件(循环等待):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。
李><强>现总结下查看死锁的常用二种方式:强>
<强>第一种是图形化监听:强>
,——在状态"置疑"工具——比;sql server profiler ,登录后在跟踪属性中选择如下图:
Deadlock encountered .... Printing Deadlock 信息 Wait-for 图 零 节点:1, 页面:7:1:6229275 CleanCnt: 2,模式:IX 旗帜:0 x3 Grant List 3: 老板:0 x00000004e99b7880 模式:IX Flg: 0 x40 裁判:1,生活:02000000,SPID: 219年,ECID: 0, XactLockInfo: 0 x0000000575c7e970 SPID:, 219, ECID:, 0, Statement 类型:,UPDATE Line #: 84 Input Buf:, Language 事件:exec proc_PUB_StockDataImport Requested 通过: ResType: LockOwner 药栓:& # 39;或# 39;xd: 0 x0000000c7a905d30 模式:,U SPID: 64年,BatchID: 0, ECID: 59, TaskProxy: (0 x0000000e440aafe0),值:0 x8d160240 成本:(0/0) 零 节点:2, 页面:7:1:5692366 CleanCnt: 2,模式:U 旗帜:0 x3 Grant List 3: 老板:0 x0000000d12099b80 模式:U Flg: 0 x40 裁判:0,生活:00000001,SPID: 64年,ECID: 0, XactLockInfo: 0 x000000136b4758f0 SPID:, 64, ECID:, 0, Statement 类型:,UPDATE Line #: 108 Input Buf:, RPC 事件:,Proc [Database Id =, 7, Object Id =, 907150277)
- - - - - - - - - -节点:1部分显示的几个关键信息:
,页7:1:6229275 (所在数据库ID 7,1分区,6229275行数)
,模式:IX 锁的模式,意向排它锁
, SPID: 219,进程ID
,事件:exec proc_PUB_StockDataImport 执行的存储过程名
- - - - - - - node: 2部分显示的几个关键信息
,页7:1:5692366 (所在数据库ID 7,1分区,5692366行数)
,模式:U锁的模式,更新锁
, RPC事件:Proc远程调用
, SPID: 64,进程ID
Victim Resource 所有者: ResType: LockOwner 药栓:& # 39;或# 39;xd: 0 x0000000c7a905d30 模式:,U SPID: 64年,BatchID: 0, ECID: 59, TaskProxy: (0 x0000000e440aafe0),值:0 x8d160240 成本:(0/0) deadlock-list deadlock =process956f4c8受害者 进程列表 process id=process956f4c8  taskpriority=0, logused=0, waitresource=页:,7:1:6229275 waittime=2034, ownerId=2988267079, transactionname=UPDATE lasttranstarted=2018 - 04 - 19 t13:54:00.360 xd=0 xc7a905d30 lockMode=U schedulerid=24, kpid=1308,状态=suspended spid=64, sbid=0, ecid=59,优先级=0,trancount=0, lastbatchstarted=2018 - 04 - 19 t13:53:58.033 lastbatchcompleted=2018 - 04 - 19 t13:53:58.033 clientapp=.Net SqlClient Data Provider 主机名=VMSERVER76 hostpid=16328, isolationlevel=read committed (2), xactid=2988267079, currentdb=7, lockTimeout=4294967295, clientoption1=671088672, clientoption2=128056 executionStack frame procname=Test.dbo.proc_CnofStock 行=108,stmtstart=9068, stmtend=9336, sqlhandle x03000700c503123601ba25019ca800000100000000000000=0 update dbo.pub_stock set UpdateTime=获取当前日期() 得到pub_stock join PUB_PlatfromStocktemp  b 提醒a.GUID=b.StockGuidsql server中死锁排查的示例分析