OWI

래치(Latch) 와 락(Lock)

김포춘 2014. 12. 9. 17:32
반응형

래치와 락의 차이점

 

 분류 

 래치 

 락 

 목적 

  하나의 목적을 수행 :

 메모리 구조에 대한 배타적인 접근을 위함

(오라클 9i 부터 cache buffers chains latch 들은 읽기 전용시 공유 가능)

  두 가지 목적을 수행 -

 락모드가 호환 가능 : 다수의 프로세스가 동일 리소스를 공유하는 것을 허용

 락모드가 호환 불가능 : 리소스에 대한 배터적인 접근만 허용

 사용범위

 SGA내부의 데이터 구조에만 적용.

 메모리 오브젝트를 임시적으로 보호.

 단일 오퍼레이션으로 메모리 구조에 대한 접근 제어

 트랜잭션 단위가 아님

 테이블, 데이터 블록 및 state object 와 같은 오브젝트를 보호함.

 데이터베이스의 데이터 또는 메타데이터 접근 제어

 트랜잭션 단위

 획득방식

 두가지 모드로 요청 가능 : willing-to-wait 또는 no-wait

 6가지 모드로 요청 가능 : null, row share, row exclusive,share, share row exclusive 또는 exclusive

 범위

 SGA내부에 정보가 존재하며, 로컬 인스턴스에서만 볼 수 있음 - 래치는 인스턴스 레벨로 작동

 데이터베이스 내부에 정보가 존재하며, 모든 인스턴스에서 볼 수 있음 - 락은 데이터베이스 레벨에서 작동

 복잡도

 단순한 명령어를 사용하여 구현

 일반적으로 test-and-set, compare-and-swap 또는 단순한 CPU명령어. 구현이 쉬움

 문맥 교환(context switch)을 포함한 일련의 명령어들을 사용하여 구현됨.

 구현이 복잡함

 지속기간

 아주 짧은 순간만 지속 ( microsecond단위 )

 일정 시간 동안 지속됨 (트랜잭션 동안)

 큐 (Queue)

 프로세스가 래치 획득을 실패한 후 슬립 상태로 들어갈 때, 해당 요청은 큐로 관리되지 않으며, 요청한 순서대로 서비스 되징 않음 (latch wait list를 이용하여 큐 방식으로 사용되는 래치들은 예외)

 프로세스가 락 획득을 실패한 후, 해당 요청은 큐로 관리

 요청한 순서대로 서비스됨 ( NOWAIT 모드는 예외 )

 데드락

 래치는 데드락이 발생되지 않도록 구현됨

 락은 큐 방식을 사용하며, 데드락이 발생될 가능성이 높음.

 데드락이 발생 될 때마다 트레이스 파일 생성

 

래치란?

 - 락 중에서 아주 빠른 속도로 작동하게끔 구현된 경량화된 락

 - Shared Pool 영역에 존재하는 일종의 메모리 구조체

 

래치가 보호하는 리소스

 - SGA에 접근하는 모든 프로세스는 반드시 해당 영역을 관장하는 래치를 획득한 후에만 접근이 허용됨.

 

래치를 획득하는데 실패한 프로세스는 래치를 획득할 수 있을 때까지 특정 대기 이벤트를 기다림

 

 

 

반응형

'OWI' 카테고리의 다른 글

redo log owi  (0) 2014.12.11