enq: TX - row lock contention
enq: TX - row lock contention
对硬的语句是一个insert
不知道如何处理
再现等待,着急!
看下lmode是多少
列上有约束或者有主键?
被阻塞的session都市同一个insert语句insert into T_CONTCT_PRUCT_LOG
一个insert 没有commit.
而这个列上有约束,另一个session Insert只能被block住。
--------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
顺便问下:commit和释放表的锁还是有区别?
这个insert语句的commit,代表释放对表的lock?>
yes,commit and rollback will release the resources hold by the transaction.
更补充到:对于row lock,应该是DML这类情况,都会一样。
如果你插入的是两条不同的记录,是没有问题的。
非常感谢各位的帮忙!
总结一下:
1,两个不同的SESSION同时插入或者在没有COMMIT时先后插入相同的记录到同一个表时,发生TX阻赛;
2,两个不同的SESSION同时插入不会发生TX阻赛;
发生1的场合:
由于页面没有禁止重复提交或刷新,用户可能会不断的刷新,造成TX阻赛现象!
QUOTE:
--------------------------------------------------------------------------------
原帖由 joeldavid 于 2007-12-26 15:47 发表
--session 1
SQL> create table t1(x int primary key);
表已创建。
SQL> insert into t1 values(1);
已创建 1 行。
--session 2
SQL> insert into t1 values(1);
was block by session 1;
SQL> select sid,type,id1,id2 ,lmode,request,block from v$lock where sid in (151,156) and type='TX';
SID TY ID1 ID2 LMODE REQUEST BLOCK
---------- -- ---------- ---------- ---------- ---------- ----------
151 TX 327713 1334 0 4 0
151 TX 65580 1271 6 0 0
156 TX 327713 1334 6 0 &nb
**********************************************************************************
顺便问下:commit和释放表的锁还是有区别?
这个insert语句的commit,代表释放对表的lock?>
--------------------------------------------------------------------------------
yes,commit and rollback will release the resources hold by the transaction.
**********************************************************************************
QUOTE:
--------------------------------------------------------------------------------
原帖由 dhcwenOra 于 2007-12-26 16:10 发表
补充一下,delete也会师一样的情况!
--------------------------------------------------------------------------------
更补充到:对于row lock,应该是DML这类情况,都会一样。
***********************************************************************************
QUOTE:
--------------------------------------------------------------------------------
原帖由 joeldavid 于 2007-12-26 15:40 发表
session1往t1插入了一条数据,然后没有提交;session2往t1插入了一条数据,由于怕主建重复,session2需要等待session1 commit;
这样理解对吗?
session 2 需要等待session1对t1的lock释放后才可以
--------------------------------------------------------------------------------
如果你插入的是两条不同的记录,是没有问题的。
************************************************************************************
结帖了;
非常感谢各位的帮忙!
总结一下:
1,两个不同的SESSION同时插入或者在没有COMMIT时先后插入相同的记录到同一个表时,发生TX阻赛;
2,两个不同的SESSION同时插入不会发生TX阻赛;
发生1的场合:
由于页面没有禁止重复提交或刷新,用户可能会不断的刷新,造成TX阻赛现象!
from:
http://www.itpub.net/viewthread.php?tid=916999