문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| study:oracle:adv_owi_10g:latch_and_lock [2009/07/29 08:55] – starlits | study:oracle:adv_owi_10g:latch_and_lock [2025/10/03 22:30] (현재) – 바깥 편집 127.0.0.1 | ||
|---|---|---|---|
| 줄 9: | 줄 9: | ||
| ^ 분류 ^ 래치(latch) ^ 락(lock) ^ | ^ 분류 ^ 래치(latch) ^ 락(lock) ^ | ||
| - | ^ 목적 | | | | + | ^ 목적 | 메모리구조에 대한 베터적인 접근 |
| - | ^ 사용범위 | | | | + | ^ 사용범위 | SGA내부구조 |
| - | ^ 획득방식 | | | | + | ^ 획득방식 | 2가지 모드 |
| - | ^ 범위 | | | | + | ^ 범위 | SGA 내부 |
| - | ^ 복잡도 | | | | + | ^ 복잡도 | 단순 |
| - | ^ 지속기간 | | | | + | ^ 지속기간 | 아주 짧은 순간 \\ (microsecond 단위) |
| - | ^ 큐(Queue) | | | | + | ^ 큐(Queue) | Queue로 관리 안함 |
| - | ^ DeadLock | | | | + | ^ DeadLock | 발생안함 |
| 줄 90: | 줄 90: | ||
| ==== Latch 관련 Dynamic Views ==== | ==== Latch 관련 Dynamic Views ==== | ||
| - | ^ V$LATCH | 모든 래치들의 통계에 대한 합계치 정보 | | + | ^ V$LATCH |
| - | ^ V$LATCH_MSSES | 래치 MISS가 발생한 커널코드의 영역에 대한 정보 | | + | ^ 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 | ||