关于多个会话引起唯一键冲突

关于多个会话引起唯一键冲突
发生唯一键冲突时会发生TX锁争用,进程a执行insert后,若进程b执行insert会引发唯一键冲突,进程b要以shared 模式获取TX锁,
发生等待,进程b会等到进程a提交或者回滚为止,若进程a上完成提交,则b上出现ora-0001。若进程a完成了回滚,则进程b的insert成功完成。
Session A:
[@more@]
--关于多个会话引起唯一键冲突
发生唯一键冲突时会发生TX锁争用,进程a执行insert后,若进程b执行insert会引发唯一键冲突,进程b要以shared 模式获取TX锁,
发生等待,进程b会等到进程a提交或者回滚为止,若进程a上完成提交,则b上出现ora-0001。若进程a完成了回滚,则进程b的insert成功完成。
Session A:
SQL> create table test(id number,birthdate date);
Table created.
SQL> create unique index test_idx on test(id);
Index created.
SQL> insert into test values(1,sysdate);
1 row created.
Session B:
SQL> insert into test values(1,sysdate);
....
wait
Session C:
SQL> select (sysdate-a.logon_time)*24*60 minutes,
2 a.BLOCKING_SESSION,
3 a.sid,
4 a.serial#,
5 a.event,
6 a.p1,
7 a.p2,
8 a.p3,
9 a.sql_id
10 from v$session a, v$sql b
11 where
12 a.sql_address = b.address
13 and a.sql_hash_value = b.hash_value
14 and a.sql_child_number=b.child_number
15 and a.username like 'SH'
16 order by 1 desc;
MINUTES BLOCKING_SESSION SID SERIAL# EVENT P1 P2 P3
---------- ---------------- ---------- ---------- ------------------------- ---------- ---------- ----------
4.95 143 127 639 enq: TX - row lock conten 1415053316 655374 1232
tion
应用程序里面唯一键引起的TX锁争用可能发生,不过如果使用sequence的话就可以避免。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25586587/viewspace-1053999/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25586587/viewspace-1053999/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值