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


사업자 정보 표시
(주)블루원 | 김홍태 | 서울특별시 용산구 원효로 4가 135 금홍 2빌딩 | 사업자 등록번호 : 106-86-76684 | TEL : 02-3272-7200 | Mail : support_ora@blueone.co.kr | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기

'DB - ORACLE > DB Tunning(TABLE,SQL,...)' 카테고리의 다른 글

Segment shrinking  (0) 2016.01.02
풀 테이블 스캔으로 시스템 리소스 증가하는 쿼리 튜닝  (0) 2015.12.30
Keep Buffer 활용방안  (0) 2015.12.30
SQL 성능 향상 지침  (0) 2015.12.29
Tuning 이란  (0) 2015.12.29

+ Recent posts