ORACLE索引分裂(enq: TX - index contention)

oracle索引分裂探索
背景:近期生产环境业务高峰期库压力突增,表现为CPU使用率升高,sql执行时间长,执行sql的会话阻塞大概100多条。等待事件是enq:TX-index contention 和 buffer busy waits

enq:TX-index contention是一个非常常见的等待事件,其专指由于索引分裂产生的竞争等待。
索引分裂:
什么是索引分裂呢?索引分裂是指:当某个索引块中的空闲空间不足以容纳新加入的记录时,寻找一个新的索引块来存放记录。一般来说insert是引起索引块分裂的主要操作。
索引分裂可以分为三种:
leaf block split(叶节点分裂)
branch block split(枝节点分裂)
root block split(根节点分裂)
按照 leaf Block Split 分裂时的行为 又可以分为:
leaf node 90-10 splits 插入到索引leaf block叶子块中的索引键是该块中最大的键值(包括块中已删除的索引键值)。 在此种情况下实施 90-10 split( 实际是 99-1 ),原叶子块仍保持99%的full, 而到另一个空的叶子块中插入该条新的最大键值记录。
leaf node 90-10 splits 行为的次数可通过v$sysstat视图 中leaf node 90-10 splits获得,AWR中也有对应记录:
在这里插入图片描述
leaf node 50-50 splits 当插入到索引叶子块中的索引键值不是该块中的最大值时(包括块中已删除的索引键值), 将发生 50/50 split分裂, 这意味着有一半索引记录仍存在当前块,而另一半数据移动到新的叶子块中。
leaf node 50-50 splits的次数也是通过AWR中获取

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值