study:oracle:adv_owi_10g:latch_and_lock
문서의 이전 판입니다!
목차
Latch and Lock
- 오라클은 latch 와 lock 이라는 Synchronization(동기화) 매커니즘을 이용하여 리소스를 보호한다.
- latch 와 lock 를 둘 다 동시작업으로부터 자원을 보호하는 것이다.
- OWI를 이용하면 latch와 lock에 의한 경합현상을 직관적으로 파악할 수 있다.
latch와 lock의 차이점
| 분류 | 래치(latch) | 락(lock) |
|---|---|---|
| 목적 | ||
| 사용범위 | ||
| 획득방식 | ||
| 범위 | ||
| 복잡도 | ||
| 지속기간 | ||
| 큐(Queue) | ||
| DeadLock |
Latch
Latch 정의
- 가벼운 락(Lock)
- 오라클 메뉴얼에서 분류하는 방법
- 아주 빠른 속도로 작동하게끔 구현된 경량화된 락
- 일반적으로는 Latch와 Lock 을 전혀 다른 객체로 분류
- 물리적으로 Shared Pool 영역에 존재하는 일종의 메모리 구조체
- 매우 간단하고 작은 메모리영역 사용
Latch가 보호하는 Resource
- Latch가 보호하는 Resource : SGA
- SGA의 특정영역을 탐색하거나 변경하고자 하는 프로세스는 반드시 해당 영역을 관장하는 latch를 획득해야 한다.
- Latch를 통해서 Oracle의 SGA자원을 보호한다.
- Shared Pool 래치
- 새로운 SQL문을 실행하고자하는 프로세스는 해당 SQL을 Shared Pool의 library cache 영역에 올린다.
이 때 필요한 Heap Memory 영역을 할당받기 위해 획득하는 래치이다. - Shared Pool 래치는 보통 전체 인스턴스에 하나만 존재하므로
한번에 하나의 프로세스만이 Heap으로부터 Chunk를 할당 받을 수 있다.
- Cache Buffers Chains 래치
- Select 문을 통해서 특정 datablock을 읽기 위해서
datablock의 DBA(Data Block Address)와 Class에 해당하는 Hash Chain에 접근하고자 하는 모든 프로세스는
반드시 해당 해시 체인을 관장하는 cache buffers chains 래치를 획득한다.
- redo copy 래치
- DML을 통해서 데이터를 변경한 모든 프로세스는 PGA영역에 Redo 데이터를 생성하는데,
이 리두 데이터를 Redo buffer로 복사하기 위해서 획득하는 래치이다.
latch 분류
| 분류기준 | 설명 | 조회 뷰 |
|---|---|---|
| Parent latch(부모래치) | 여러 개의 자식래치를 거느리는 래치 | V$LATCH_PARENT |
| Solitary latch(독립래치) | 전체 인스턴스에 단 하나만 존재하는 래치 | |
| Child latch(자식래치) | 부모래치에 속한 래치 | V$LATCH_CHILD |
Latch 동작 매커니즘
Latch 관련 Dynamic Views
일반적인 Latch 관련 대기이벤트들
Lock
Lock의 분류
Lock이 보호하는 Resource
Lock 동작 매커니즘
Lock 관련 Dynamic Views
일반적인 Lock 관련 대기이벤트들
study/oracle/adv_owi_10g/latch_and_lock.1248824147.txt.gz · 마지막으로 수정됨: 저자 starlits
