오라클에서는 동시에 수많은 프로세스가 동일 리소스를 사용할 수 있음
그.래.서. 리소스의 일관성을 보호하기 위해 Latch와 Lock 두가지 동기화 메커니즘이 사용됨.
★ Latch 래치와 Lock 락의 차이점 꼭 알아두기!!!
LATCH 래치 |
LOCK 락 |
|
목적 |
메모리(SGA)를 동시에 쓸 때 Latch가 보호 |
공유 리소스와 사용자 데이터를 보호 |
사용범위 |
SGA 내부 데이터 구조에만 적용 |
메모리(SGA)+데이터베이스를 보호 |
획득방식 |
willing-to-wait, no-wait |
null, row share, row exclusive, share, |
범위 |
shared pool에 정보가 존재, --> 인스턴스 레벨로 작동 |
데이터베이스에 정보가 존재, 모든 인스턴스(node)에 적용 (GCS같은것) --> 데이터베이스 레벨로 작동 |
복잡도 |
구현이 쉬움 |
구현이 어려움 |
지속기간 |
아주 짧은 시간만 지속, max=2sec |
commit 하기 전까지는 계속 지속됨 (트랜잭션동안 지속) |
큐 (Queue) |
순서와 상관 없이 latch를 획득, 순서 보장 안함 |
queue로 관리되기 때문에 순서대로 lock을 획득 |
데드락 |
deadlock이 발생되지 않도록 구현 |
deadlock이 발생될 가능성이 높음 |
'TUNING' 카테고리의 다른 글
OWI - Oracle Wait Interface (0) | 2013.03.26 |
---|---|
INSTANCE 튜닝 - Data Buffer Cache (0) | 2013.03.19 |
Optimizer (0) | 2013.03.14 |
SQL AutoTrace & SQL Trace (0) | 2013.03.12 |
SQL 처리 구조 (0) | 2013.03.11 |