没有合适的资源?快使用搜索试试~ 我知道了~
SQLSERVER死锁总结
需积分: 48 57 下载量 177 浏览量
2018-10-18
15:32:23
上传
评论 4
收藏 84KB DOCX 举报
温馨提示
试读
12页
SQLSERVER死锁总结,里面详述基于SQLSERVER数据库如何排查并处理死锁的办法,及死锁产生的原因
资源推荐
资源详情
资源评论
SQL Server 死锁总结
死锁总结
1.死锁原理
根据操作系统中的定义:死锁是指在一组进程中的各个进程均占有不会释放的资源,但
因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。
死锁的四个必要条件:
互斥条件 :资源不能被共享,只能由一个进程使用。
请求与保持条件 :已经得到资源的进程可以再次申请新的资源。
非剥夺条件 :已经分配的资源不能从相应的进程中被强制地剥夺。
循环等待条件 :系统中若干进程组成环路,该环路中每个进程都在等待
相邻进程正占用的资源。
对应到 中,当在两个或多个任务中,如果每个任务锁定了其他任务试图锁定
的资源,此时会造成这些任务永久阻塞,从而出现死锁;这些资源可能是:单行 ,
堆中的单行 、索引中的键 !"#,行锁 、页 $%&, '!(、区结构 ")*,连续的
'页 、堆或 (树 +(*、表 *%(,包括数据和索引 、文件 ,,数据库文件 、
应用程序专用资源 %$$、元数据 "*% %*%、分配单元 %-.、整个
数据库 (。一个死锁示例如下图所示:
说明: */、 *0表示两个任务; /和 0表示两个资源;由资源指向任务的箭头
如 /1*/, 01*0表示该资源被改任务所持有;由任务指向资源的箭头 如 */
10, *01/表示该任务正在请求对应目标资源;
其满足上面死锁的四个必要条件:
/2互斥:资源 /和 0不能被共享,同一时间只能由一个任务使用;
02请求与保持条件: */持有 /的同时,请求 0; *0持有 0的同时请求 /;
32非剥夺条件: */无法从 *0上剥夺 0, *0也无法从 */上剥夺 /;
42循环等待条件:上图中的箭头构成环路,存在循环等待。
5677289275:77;<00<=>25
行锁的对象是表
悲观锁的对象是事务
2.死锁排查
/2使用 的系统存储过程 -5和 -:,可以查看当前数据库中的
锁情况;进而根据 8? @8? 0AA;78?-@8? B
0AAA可以查看哪个资源被锁,用 8@8:,可以查看最后一条发生给
的 B语句;
以下创建两个临时表它们会在于C8 中
"%*"*8CD5E
E
5;AE
95;AE
55;AE
8:E
85;AE
5;AE
B- F
"%*"*8C:E
E
8?E
E
G*HI50AE
5;AE
5/AE
5/A
F
"**+CD5
")"-5看哪个引起的阻塞,8:
"**+C:
")"-:看锁住了那个资源 ,8?
"%"@ (50AF
"*@ (JK+L (K
""*CD52M,+CD5D""8J@ (
""*C:2M,+C:
N+CD5
+CD52JC:2
% 8J@ (F
剩余11页未读,继续阅读
资源评论
sunhaook666
- 粉丝: 2
- 资源: 71
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功