原厂面试题一 什么是索引分裂

130阅读 0评论2020-09-11 brjl
分类:Oracle


原厂:什么是索引分裂?
小白:索引还分裂?,没听说过,不是我干的,肯定是垃圾应用捣的鬼,数据库不起应用跑的好好的。
原厂:out


临阵磨枪:
事务修改了索引块上的信息,而索引块没有足够空间存放这些信息,必须分裂出一个新块来存放,因此导致分裂现象。最常见的是叶子块分裂,可以在awr中搜索node split 或者v$sesstat 中过滤splits。


索引的争用源自于索引的分裂,而触发索引的分裂的契机就是索引上的高并发事务操作。


如何去解决高并发导致索引分裂的争用:


1.增加ITL槽来增加并发处理能力
即修改索引initrans 参数,其实修改initrans 参数并没有真正解决问题,随着并发度的不断提升,ITL 槽的争用也越发激烈。


2.反向建索引。
利:入库高效了,几乎完全消除了enq:TX-index contention   
弊:数据读取低效,本来访问一个索引块即可,现在需要访问多个索引块了,增加了额外I/O开销。


引自:http://blog.itpub.net/26736162/viewspace-2139232/
上一篇:夸张到不太象话的时间统计模型历史
下一篇:原厂面试题二 drop对象后没有进回收站,怎么肥四