문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 마지막 판 양쪽 다음 판 | ||
study:oracle:adv_owi_10g:transaction_wait_event [2009/08/14 16:53] starlits |
study:oracle:adv_owi_10g:transaction_wait_event [2009/08/17 09:15] starlits |
||
---|---|---|---|
줄 3: | 줄 3: | ||
===== 트랜잭션 작업순서 ===== | ===== 트랜잭션 작업순서 ===== | ||
- | * 사용자 DML(트랜잭션)수행 작업순서 | + | == 사용자 DML(트랜잭션)수행 작업순서 |
^ 순서 ^ 작업내용 ^ 실패시 동작 ^ 이벤트 ^ | ^ 순서 ^ 작업내용 ^ 실패시 동작 ^ 이벤트 ^ | ||
줄 118: | 줄 118: | ||
==== 여러 세션이 Bitmap Index 충돌을 일어키는 경우 ==== | ==== 여러 세션이 Bitmap Index 충돌을 일어키는 경우 ==== | ||
- | - | + | - 하나의 리프 노드가 넓은 범위의 ROWID를 관리한다. |
+ | - **enq:TX - row lock contention** | ||
+ | - 테이블의 로우가 변경될때마다 비트맵 인덱스에 해당하는 컬럼값에 대해 로우가 속한 리프 노드의 비트맵을 매번 새로 계산해주어야 한다. \\ 따라서 동시에 두 세션이 같은 리프 노드의 비트맵 연산을 수행할 경우, 순서를 보장하기 위해서 TX 락을 획득한다. | ||
+ | - 특정 세션이 TX 락을 Exclusive 하게 획득한 후, 비트맵 연산을 수행하고 아직 커밋을 하지 않았다면, | ||
==== 인덱스 리프 노드에서 Split이 발생하는 경우 ==== | ==== 인덱스 리프 노드에서 Split이 발생하는 경우 ==== | ||
- | - | + | - 비트리 인덱스는 **데이터를 추가하는 과정에서 리프 노드가 꽉차면 Split을 함으로써 Balance를 맞춘다.** |
+ | - **enq:TX - index contention** | ||
+ | - 보통의 상황에서는 잘 볼생하지 않는다. | ||
+ | - 동시에 여러 세션에서 인덱스가 생성되어 있는 테이블에 대해서 많은 양의 DML을 수행하는 경우에 주로 발생한다. | ||
+ | - 시퀀스 등을 사용해서 값을 생성하는 컬럼에 대해 인덱스가 생성되는 경우 | ||
+ | - 인덱스가 생성되어 있지 않은 테이블을 변경하는 경우 | ||
+ | - 테이블에 LOB컬럼이 있을때 동시에 여러세션이 LOB테이블을 변경하는 경우 | ||
==== 기타(enq: Tx - contention) ==== | ==== 기타(enq: Tx - contention) ==== |