【ASK_ORACLE】關於Oracle索引分裂你需要知道的

Attack_on_Jager發表於2022-09-26

等待事件“enq: TX - index contention”與索引分裂

在執行高併發 insert(主要原因)或者delete操作時,有可能就會看到該SQL對應的索引上的的大量TX佇列發生爭用(RAC環境下可能所有節點都會產生)。這種問題就是由於insert了一行,索引也會跟著增加,當在索引塊中找不到需要插入新行的空間時就會產生索引分裂。並且在索引完成分裂前,就會產生等待事件“enq: TX - index contention”,直到索引分裂完成。


索引分裂種類

葉節點分裂( leaf block split

枝節點分裂branch block split

根節點分裂root block split

 

產生索引分裂的過程

1. 首先,DB劃分出一個新的索引塊

2. 其次,按一定比例複製行到新索引塊

3. 最後,將新索引塊新增到索引結構中

 

索引分裂的幾種發生條件

1. 大量訪問的表的索引

2. 先執行資料量很大的delete,然後立馬又進行大批次insert

3. 索引只往右邊生長增長,導致增長失衡


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2916305/,如需轉載,請註明出處,否則將追究法律責任。

相關文章