Latch & Lock

1. Latch 개요

가벼운 Lock(Light-weight Lock)

공유 Memory 영역(SGA)을 보호하기 위한 동기화 객체

1.1 Latch가 보호하는 Resource

-Latch는 SGA의 모든 하위 Memory 영역을 보호

-Cache Buffer

-Shared Pool

-Library Cache

-Redo Buffer

1.2 Memory 영역의 속성에 따라 하나 혹은 여러 개의 Latch 사용

-여러 개의 Latch를 사용하는 경우 Parent/Child의 관계

-Cache Buffer : 수천 개 ~ 수 만개의 Latch

-Shared Pool : 하나의 Latch

-Library Cache : CPU 개수에 비례

-Redo Buffer : 하나 ~ 여러 개의 Latch

1.3 Latch 획득 Mechanism

Spin vs Posting

Spin

-Latch 획득 실패 시 Spin을 수행하며 재시도

-Spin에 의한 재시도에서  실패 시에는 Sleep & Wake

-cache buffers chains latch 등 대부분의 Latch에서 사용

Posting

-Latch 획득 실패 시 Wait List에서 대기

-Latch Holder가 Post(알려줌)해주면 Latch 획득 다시 시도

-library cache latch, shared pool latch 등에서 사용

2. latch free

2.1 Event 정의 

Latch를 획득하는데 실패한 후 Latch를 획득할 때까지 기다리는 이벤트

2.2 Spin을 수행하는 경우에는 “대기”  상태이지만  CPU를 사용

-Active Wait/Busy Wait

-예) latch: cache buffers chains Event 발생 시 높은 CPU 사용률

2.3 Oracle 10g부터는 Event 명 세분화

-latch: cache buffers chains 

-latch: shared pool

-latch: library cache

-latch free

2.4 Dynamic Performance Views

V$LATCH : Latch 획득 통계. Latch 종류 당 하나

V$LATCH_PARENT : 부모 Latch 통계(자식이 없는 부모만)

V$LATCH_CHILDREN : 자식 Latch 통계

V$LATCHHOLDER : Latch Holder 정보

V$LATCH_MISSES : Latch 획득 실패 정보

3. Lock

3.1 Lock의 개요

Latch보다 무거운 동기화 객체

Database와 관련된 객체(Object)를 보호하는 동기화 객체

3.2 Lock이 보호하는 Resource

-Latch가 보호하는 Resource 외의 모든 Database Object

–Tablespace

–Table

–Row

–Transaction

–LCO(Library Cache Object)

–RCO(Row Cache Object)

3.3 Lock의 분류

-Enqueue Lock

–User Type: TX, TM, UL

–System Type: US, HW, SQ, SV, TT, WF, …

–V$LOCK_TYPE 뷰 참조(10g)

-기타 Lock

–library cache lock, library cache pin

–row cache lock

–buffer lock

3.4 Lock 획득 Mode

-6 단계의 Mode 정의

–Null (1, N)

–Sub-Shared (2, SS, RS)

–Sub-Exclusive (3, SX, RX)

–Shared (4, S)

–Shared-Sub-Exclusive (5, SSX, SRX)

–Exclusive (6, X)

-예:

–UPDATE XXX SET … 

—XXX Table에 대해 TM Lock을 SX Mode로 획득

—Transaction에 대해 TX Lock을 X Mode로 획득

–ALTER TABLE XXX …

—XXX Table에 대해 TM Lock을 X Mode로 획득

4. enqueue

Enqueue Lock을 획득하는데  실패한 후 Enqueue Lock을 획득할 때까지 대기하는 Event

4.1 Oracle 10g부터는 Event 명 세분화

-enq: TX – row lock contention

-enq: TX – allocate ITL entry

-enq: TM – contention

-enq: SQ – contention

-enq: HW – contention

4.2 기타 Lock 관련 Event

-library cache lock

-library cache pin

-row cache lock

-buffer busy waits

4.3 Dynamic Performance Views

-V$LOCK : Enqueue Lock에 대한 모든 정보

-DBA_KGLLOCK : Library cache lock + Library cache pin

-X$KGLLK : Library cache lock

-X$KGLPN : Library cache pin

-X$KGLOB : LCO

-V$ROWCACHE_PARENT : Row cache lock

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다