사용자 도구

사이트 도구


study:oracle:adv_owi_10g:transaction_wait_event

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
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:06]
starlits
줄 3: 줄 3:
 ===== 트랜잭션 작업순서 ===== ===== 트랜잭션 작업순서 =====
  
-  * 사용자 DML(트랜잭션)수행 작업순서+== 사용자 DML(트랜잭션)수행 작업순서 == 
  
 ^ 순서 ^ 작업내용 ^ 실패시 동작 ^ 이벤트 ^ ^ 순서 ^ 작업내용 ^ 실패시 동작 ^ 이벤트 ^
줄 118: 줄 118:
 ==== 여러 세션이 Bitmap Index 충돌을 일어키는 경우 ==== ==== 여러 세션이 Bitmap Index 충돌을 일어키는 경우 ====
  
-  - +  - 하나의 리프 노드가 넓은 범위의 ROWID를 관리한다. 
 +  - **enq:TX - row lock contention**  
 +    - 테이블의 로우가 변경될때마다 비트맵 인덱스에 해당하는 컬럼값에 대해 로우가 속한 리프 노드의 비트맵을 매번 새로 계산해주어야 한다. \\ 따라서 동시에 두 세션이 같은 리프 노드의 비트맵 연산을 수행할 경우, 순서를 보장하기 위해서 TX 락을 획득한다. 
 +    - 특정 세션이 TX 락을 Exclusive 하게 획득한 후, 비트맵 연산을 수행하고 아직 커밋을 하지 않았다면, \\ 다른 세션들은 선행한 트랜잭션에 대해 TX 락을 Shared mode로 확보하기 위해 대기함으로써 비트맵 연산이 끝나기를 기다리게 된다. 즉, 하나의 리프 노드가 넒은 범위의 ROWID를 관리하기 때문에 TX 락 경합이 광범위하게 나타날 수 있다.
  
 ==== 인덱스 리프 노드에서 Split이 발생하는 경우 ==== ==== 인덱스 리프 노드에서 Split이 발생하는 경우 ====
  
 +  - 비트리 인덱스는 **데이터를 추가하는 과정에서 리프 노드가 꽉차면 Split을 함으로써 Balance를 맞춘다.**
   -    - 
  
study/oracle/adv_owi_10g/transaction_wait_event.txt · 마지막으로 수정됨: 2009/08/17 09:39 저자 starlits