사용자 도구

사이트 도구


study:oracle:adv_owi_10g:latch_and_lock

문서의 이전 판입니다!


Latch and Lock

  1. 오라클은 latch 와 lock 이라는 Synchronization(동기화) 매커니즘을 이용하여 리소스를 보호한다.
  2. latch 와 lock 를 둘 다 동시작업으로부터 자원을 보호하는 것이다.
  3. OWI를 이용하면 latch와 lock에 의한 경합현상을 직관적으로 파악할 수 있다.

latch와 lock의 차이점

분류 래치(latch) 락(lock)
목적
사용범위
획득방식
범위
복잡도
지속기간
큐(Queue)
DeadLock

Latch

Latch 정의

  1. 가벼운 락(Lock)
    1. 오라클 메뉴얼에서 분류하는 방법
    2. 아주 빠른 속도로 작동하게끔 구현된 경량화된 락
    3. 일반적으로는 Latch와 Lock 을 전혀 다른 객체로 분류
  2. 물리적으로 Shared Pool 영역에 존재하는 일종의 메모리 구조체
  3. 매우 간단하고 작은 메모리영역 사용

Latch가 보호하는 Resource

  1. Latch가 보호하는 Resource : SGA
  2. SGA의 특정영역을 탐색하거나 변경하고자 하는 프로세스는 반드시 해당 영역을 관장하는 latch를 획득해야 한다.
  3. Latch를 통해서 Oracle의 SGA자원을 보호한다.
  1. Shared Pool 래치
    1. 새로운 SQL문을 실행하고자하는 프로세스는 해당 SQL을 Shared Pool의 library cache 영역에 올린다.
      이 때 필요한 Heap Memory 영역을 할당받기 위해 획득하는 래치이다.
    2. Shared Pool 래치는 보통 전체 인스턴스에 하나만 존재하므로
      한번에 하나의 프로세스만이 Heap으로부터 Chunk를 할당 받을 수 있다.
  2. Cache Buffers Chains 래치
    1. Select 문을 통해서 특정 datablock을 읽기 위해서
      datablock의 DBA(Data Block Address)와 Class에 해당하는 Hash Chain에 접근하고자 하는 모든 프로세스는
      반드시 해당 해시 체인을 관장하는 cache buffers chains 래치를 획득한다.
  3. redo copy 래치
    1. 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 · 마지막으로 수정됨: 2009/07/29 08:35 저자 starlits