문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
study:oracle:adv_owi_10g:latch_and_lock [2009/07/29 08:53] starlits |
study:oracle:adv_owi_10g:latch_and_lock [2009/07/29 09:29] (현재) starlits |
||
---|---|---|---|
줄 9: | 줄 9: | ||
^ 분류 ^ 래치(latch) ^ 락(lock) ^ | ^ 분류 ^ 래치(latch) ^ 락(lock) ^ | ||
- | ^ 목적 | | | | + | ^ 목적 | 메모리구조에 대한 베터적인 접근 |
- | ^ 사용범위 | | | | + | ^ 사용범위 | SGA내부구조 |
- | ^ 획득방식 | | | | + | ^ 획득방식 | 2가지 모드 |
- | ^ 범위 | | | | + | ^ 범위 | SGA 내부 |
- | ^ 복잡도 | | | | + | ^ 복잡도 | 단순 |
- | ^ 지속기간 | | | | + | ^ 지속기간 | 아주 짧은 순간 \\ (microsecond 단위) |
- | ^ 큐(Queue) | | | | + | ^ 큐(Queue) | Queue로 관리 안함 |
- | ^ DeadLock | | | | + | ^ DeadLock | 발생안함 |
줄 89: | 줄 89: | ||
==== Latch 관련 Dynamic Views ==== | ==== Latch 관련 Dynamic Views ==== | ||
+ | |||
+ | ^ V$LATCH | ||
+ | ^ V$LATCH_MSSES | ||
+ | |||
==== 일반적인 Latch 관련 대기이벤트들 ==== | ==== 일반적인 Latch 관련 대기이벤트들 ==== | ||
+ | |||
+ | ^ latch: cache buffers chains | ||
+ | ^ latch: cache buffers lru chains | ||
+ | ^ latch: shared pool | Shared Pool의 Heap 영역에서 새로운 Chunk를 할당받고자 하는 프로세스가 획득 | | ||
+ | ^ latch: library cache | **Library Cache 영역(TABLE, | ||
+ | ^ latch: redo copy | DML에 의한 변동사항을 Redo buffer에 기록하고자 하는 프로세스가 작업하는 동안 획득 | | ||
+ | |||
+ | - 그 외 래치정보는 V$LATCHNAME 뷰에서 조회가 가능한다. | ||
===== Lock ===== | ===== Lock ===== | ||
==== Lock의 분류 ==== | ==== Lock의 분류 ==== | ||
+ | - Enqueue 락 | ||
+ | - User Type Lock : | ||
+ | - System Type Lock : | ||
+ | - 일반 락 | ||
+ | - row cache lock | ||
+ | - library cache lock | ||
+ | - library cache pin | ||
+ | - buffer locok | ||
+ | |||
==== Lock이 보호하는 Resource ==== | ==== Lock이 보호하는 Resource ==== | ||
+ | |||
+ | ^ latch | SGA 보호 | | ||
+ | ^ lock | 데이터베이스 전체 보호 | | ||
+ | |||
+ | ^ Enqueue 락 | V$LOCK | | ||
+ | ^ 일반 락 | V$SESSION_WAIT | | ||
+ | |||
==== Lock 동작 매커니즘 ==== | ==== Lock 동작 매커니즘 ==== | ||
+ | |||
+ | === lock mode === | ||
+ | |||
+ | == 락모드(0~6) == | ||
+ | |||
+ | ^ 모드 ^ 설명 ^ | ||
+ | ^ 0 | None | | ||
+ | ^ 1 | NULL(N) | | ||
+ | ^ 2 | Sub-Shared(SS) \\ Row-Shared(RS) | | ||
+ | ^ 3 | Sub-Exclusive(SX) \\ Row-Exclusive(RX) | | ||
+ | ^ 4 | Shared(S) | | ||
+ | ^ 5 | Shared-Sub-Exclusive(SSX) \\ Shared-Row-Exclusive(SRX) | | ||
+ | ^ 6 | Exclusive(X) | | ||
+ | |||
+ | == 락모드호환성 == | ||
+ | |||
+ | ^ ^ N ^ SS ^ SX ^ S ^ SSX ^ X ^ | ||
+ | ^ N | O | O | O | O | O | O | | ||
+ | ^ SS | O | O | O | O | O | X | | ||
+ | ^ SX | O | O | O | < | ||
+ | ^ S | O | O | < | ||
+ | ^ SSX | O | O | X | X | X | X | | ||
+ | ^ X | O | X | X | X | X | X | | ||
+ | |||
+ | |||
+ | === lock 획득 === | ||
+ | |||
==== Lock 관련 Dynamic Views ==== | ==== Lock 관련 Dynamic Views ==== | ||
- | ==== 일반적인 Lock 관련 대기이벤트들 ==== | ||
+ | ^ V$LOCK | ||
+ | ^ V$LOCKED_OBJECT | ||
+ | ^ V$ENQUEUE_LOCK | ||
+ | ^ DBA_WAITERS | ||
+ | |||
+ | ==== 일반적인 Lock 관련 대기이벤트들 ==== | ||
+ | ^ row cache lock | | ||
+ | ^ buffer busy waits | | ||
+ | ^ read by other session | | ||
+ | ^ library cache lock | | ||
+ | ^ library cache pin | | ||
+ | ^ DFS lock handle |