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