enq: TX - row lock contention(一)

本文讨论了在Oracle数据库中,当两个会话尝试插入相同记录到带有主键约束的表时,出现TX-rowlockcontention等待事件的问题。通过分析发现,这种情况下一个会话会阻塞另一个会话,直到第一个会话提交或回滚其事务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

enq: TX - row lock contention

系统中一直发生
enq: TX - row lock contention
对硬的语句是一个insert
不知道如何处理
再现等待,着急!

看下lmode是多少
列上有约束或者有主键?
lmod=6
bitmap index ?
检查下是不是主键约束,唯一索引限制了
查询v$lock里有一个block=1,说明该session 阻晒了其他session
被阻塞的session都市同一个insert语句insert into T_CONTCT_PRUCT_LOG
没有bitmap index
这个问题好像很简单。
一个insert 没有commit.
而这个列上有约束,另一个session Insert只能被block住。

--------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------

顺便问下: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阻赛现象!
**************************************************************************************

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;


SQLselect 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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值