事件 enq: TX - contention

1  概述:

    Tx锁等待在数据库中常见,今天说说一个关于 Enq:Tx – index contention等待案例的。

关于TX锁,常见的等待有以下几个,其中 enq: TX - index contention 的等待类型 Concurrency,不是 Application。也就是说这个等待是一个并发等待,但是不是应用程序导致的锁。

 

enq: TX - row lock contention

enq: TX - allocate ITL entry

enq: TX - index contention

enq: TX - contention

 

2  现象:

    数据库会话告警,超过阀值。1分钟内恢复。 V$SESSION中,存在大量 enq: TX - index contention的等待
  

 


通过sql_id,我们可以知道这个sql语句类似如下,是一个INSERT语句

 

INSERT INTO  T1

VALUES(  S_1.NEXTVAL,   ……………………);

 

 

通过查询对象,可以发现等待的对象时T表的主键


3  问题分析:

    Insert 数据,发现主键等待。仔细分析了业务场景,存在这样的一种业务:在很短的时间内,大量在T表内INSERT数据,那么由于主键是自增长的,很短的时间数据全部写入一个或者几个索引块,导致了索引则争用。

    这种情况,oracle数据库在子自增长主键,如果insert非常繁忙是存在的,现有的解决方案也非常简单,如果不需要按照主键范围搜索,那么就做一个反向索引,让相似的值反向后,落到不同的索引块中,减缓这种并发。

    由于是线上系统,主键不能删除,只能重建

 

ALTER  INDEX  PK_T  REBUILD ONLINE  REVERSE;

4  问题解决

  在测试环境中,复现了上述现象,并且重建索引,问题解决。正式环境处理,问题解决

 

 

 


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

转载于:http://blog.itpub.net/617982/viewspace-1448263/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值