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
'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 |