[Oracle] Index Contention

출처 : http://serdarturgut.blogspot.com/2010/12/enq-tx-index-contention.html

 

애플리케이션의 동시성이 높은 테이블과 연결된 인덱스에서 높은 인덱스 리프 블록 경합을 있습니다. 이것은 일반적으로 응용 프로그램이 많은 INSERT DELETE 수행 발생합니다.

이유는 인덱스에 행을 삽입하는 동안 인덱스 블록이 분할되기 때문입니다. 트랜잭션은 블록 분할을 수행하는 세션이 작업을 완료할 때까지 모드 4에서 TX 잠금을 기다려야합니다.

 

이유

애플리케이션에서 많이 액세스되는 테이블의 인덱스입니다.

단조 증가하여 삽입 값이있는 테이블 열의 인덱스입니다.

대량으로 삭제된 테이블

 

인덱스 리프 블록 경합 감지

인덱스를 찾는 방법에는 여러 가지가 있습니다.

• AWR 보고서에서 높은 "enq : TX – 인덱스 경합"시스템 대기 확인

동시에 AWR 보고서의 인스턴스 활동성 통계에서 높은 분할 이벤트를 있습니다.

시스템이 RAC 경우 AWR 보고서에 다음 대기 이벤트도 표시됩니다.

인덱스 분기 블록에서 gc 버퍼 사용 대기

인덱스 리프 블록에서 gc 버퍼 사용 대기

원격 실행 취소 헤더에서 gc 현재 블록 사용

gc 현재 분할

gcs ast xid

gcs xid 거부합니다.

• v$active_session_history에서 sql_id 찾을 있습니다.

select sql_id,count(*) from v$active_session_history a

where a.sample_time between sysdate - 5/24 and sysdate

and trim(a.event) like 'enq: TX - index contention%'

group by sql_id

order by 2;

또는 V $ SEGMENT_STATISTICS 또는 AWR 보고서의 'Segments by Row Lock Waits'에서 세그먼트를 쿼리 ​​있습니다.

select * from v$segment_statistics

where statistic_name ='row lock waits'

and value>0 order by value desc;

•dba_hist_enqueue_stat stats$enqueuestat 또는 v$enqueue_stat 쿼리 ​​있습니다.

select * from v$enqueue_stat order  by cum_wait_time;

 

해결책

• Reverse Key Indexes : AWR 보고서의 'Segments by Row Lock Waits' 나열된 인덱스를 역방향 인덱스 또는 해시 파티션으로 구축합니다. 이러한 인덱스는 삽입 성능에 탁월합니다. 그러나 단점은 인덱스 범위 스캔의 성능에 영향을 미칠 있다는 것입니다.

• Hash partitioned global indexes : 인덱스가 시퀀스 또는 날짜 키로 인해 단조롭게 증가하는 경우 전역 해시 분할 인덱스는 경합을 분산시켜 성능을 향상시킵니다. 따라서 해시 파티션 글로벌 인덱스는 인덱스의 적은 수의 리프 블록이 다중 사용자 OLTP 환경에서 높은 경합을 갖는 인덱스의 성능을 향상시킬 있습니다.

시퀀스의 캐시 크기 : 값을 채우기 위해 단조롭게 증가하는 시퀀스를 사용하면 높은 시퀀스 키를 갖는 리프 블록이 삽입 때마다 변경되므로 블록이되고 블록 분할의 잠재적 후보가됩니다. CACHE SIZE ( NOORDER 옵션 사용) 사용하면 인스턴스는 다른 범위의 시퀀스 키를 사용하여 시작을 사용하여 동일한 리프 블록 집합을 삽입하는 인덱스 키를 줄입니다.

인덱스 블록 크기 : 블록 크기는 인덱스 블록 내의 수에 영향을 미치기 때문에 블록 크기는 인덱스 트리의 구조에 영향을 미칩니다. 다른 모든 것이 동일하면 32k 블록 크기는 블록 많은 키를 가지므로 2k 테이블 스페이스에서 생성 동일한 인덱스보다 평탄한 인덱스가됩니다. 인덱스 블록 크기를 조정하는 것은 작은 효과 생성 있으며 인덱스 블록 크기를 변경하는 것이 인덱스 블록 경합을 줄이기위한 번째 선택이되어서는 안되며 다른 접근 방식을 검토 후에 수행해야합니다.

인덱스 구축 : 많은 행이 삭제되거나 왜곡 된인데 경우 구축이 잠시 도움이됩니다.

 

 

All Oracle enqueue waits

Solving Waits on "enq: TM - contention"

 

'Databases > Oracle' 카테고리의 다른 글

[Oracle] Oracle 19c + CentOS7 사일런트(Silent) 설치  (0) 2021.01.27
[Oracle] Oracle 19c + CentOS7 설치(GUI)  (0) 2021.01.27
[Oracle] Index Contention  (0) 2020.10.01

댓글(0)

Designed by JB FACTORY