您在这里:首页 > 学员专区 > 技术文章
Oracle视频
Oracle
CUUG课程

和外键相关的阻塞和死锁问题总结(四)

 

session 2:
SQL> delete from p where id=3;
已删除 1 行。

SQL>
--====================
session 3:
SQL> select sid,type,id1,id2,lmode,request,ctime,block from v$lock where sid in
2 (159,128) order by sid;

SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
---------- -- ---------- ---------- ---------- ---------- ---------- ----------
128 TM 13017 0 3 0 30 0
128 TX 393219 372 6 0 541 0
128 TM 13020 0 3 0 541 0
159 TX 131078 387 6 0 643 0
159 TM 13020 0 3 0 643 0
159 TM 13017 0 3 0 447 0

已选择6行。

SQL>
同理r上有了index之后,session 2(sid:128)中的操作delete from p where id=3执行之后
加在主表p上的锁mode由原来的2变成了3,而且没有index之前请求的子表r上的锁mode是5,现在变成了3,
锁mode 3和session 1里面insert操作引起的锁mode 3在行级锁不发生冲突(因为2个session操作的r表里的数据不是同一行)
的情况下是可以兼容的,因此session 1(sid:159)不再阻塞session 2;没有了相互阻塞,死锁也就不会发生了,
因此在外键上创建index不仅会提高由于操作(比如delete主表数据)主表主键
数据而引起的扫描子表的效率而且也可以避免操作主表数据而引起的阻塞和死锁问题

 

 

(以上内容摘于网络,如有侵权,请告之,将第一时间删除)

相关文章 [上一篇] 和外键相关的阻塞和死锁问题总结(三)
010-56426307(59426319)
CUUG热门培训课程
Oracle DBA就业培训
CUUG名师
网络课程
技术沙龙
最新动态

总机:(010)-56426307,59426319 QQ讨论群:243729577 182441349 邮箱:yuezt@cuug.com
通信地址:北京市海淀区紫竹院路88号紫竹花园D座703(CUUG)邮政编码:100089 
中国UNIX用户协会 Copyright 2010  ALL Rights Reserved 北京神脑资讯技术有限公司
京ICP备11008061号