2010. 7. 16. 19:11
Transaction - Enqueue DataBase이야기2010. 7. 16. 19:11
enqueue리소스란 enqueue 락을 위해 사용되는 데이터베이스 리소스이다.
오라클은 enqueue리소스 관리를 위해 X$KSQRS 메모리 구조를 사용하며, V$RESOURCE뷰를 통해 확인이 가능.
enqueue리소스 구조는 락 유형과 두 개의 식별자로 구성된다. 두 개의 식별자는 각각 ID1, ID2 이다.<TYPE-ID1-ID2>의 구성은 데이터베이스에서 유일한 값을 가지게 되며, 이것을 enqueue identifier라고 한다. 또한 각 enqueue 리소스에는 enqueue lock를 관리하기 위한 3개의 링크드 리스트를가지고 있다.
enqueue Lock이란
X$KSQEQ(kernel service enqueue object) 메모리 구조를 사용하며, V$enqueue_lock 뷰를 통해 확인이 가능하다.
VIEW_DEFINITION
select s.inst_id,l.addr,l.ksqlkadr,s.ksusenum,r.ksqrsidt, r.ksqrsid1,r.ksqrsid2, l.ksqlkmod, l.ksqlkreq,l.ksqlkctim,l.ksqlklblk
from x$ksqeq l,x$ksuse s,x$ksqrs r where l.ksqlkses=s.addr and bitand(l.kssobflg,1)!=0 and (l.ksqlkmod!=0 or l.ksqlkreq!=0) and l.ksqlkres=r.addr;
3 0 15201 0
2 0 15211 0
2 0 15223 0
1 0 15223 0
6 0 15211 0
4 0 15205 0
4 0 15208 0
4 0 15208 0
순서대로 , <LMOE - REQUEST - CTIME - BLOCK> 이라고 볼 수 있다.
LMODE - Lock 소유 모드
Request - 락 요청 모드
ctime - 요청 시점부터 경과한 시간
block - 다른 락을 블로킹 하는지의 여부를 나타내는 블로킹 프래그
x$ksqeq.ksqlkres = x$ksqrs.addr과 결합하여 V$Enqueue_lock에서 보여준다.
enqueue리소스의 Type-ID1-ID2와 enqueue락의 <LMOE - REQUEST - CTIME - BLOCK>를 보여준다.
sql > select * from V$RESOURCE where type in ('TX','TM');
ADDR TYPE ID1 ID2
-------- ---- ---------------------- ----------------------
3306F2E0 TM 55726 0
33070D78 TX 196631 2276
두 개의 리소스 생성.
select * from V$enqueue_lock where type in ('TX','TM');
not selected;
하나도 안 생김.
select * from v$transaction_enqueue
ADDR KADDR SID TYPE ID1 ID2 LMODE REQUEST CTIME BLOCK
-------- -------- ---------------------- ---- ---------------------- ---------------------- ---------------------- ---------------------- ---------------------- ----------------------
32BBC74C 32BBC770 151 TX 196631 2276 6 0 220 0
리소스 하나 생김.
이 뷰에는 < TX 196631 2276 > 리소스를 사용하는 락<6-0-220-0>이 한개 존재한다.
결론, enqueue 대기현상이 발생하지 않는다면 x$KSQEQ 메모리 구조에 저장되지 않는다.
'DataBase이야기' 카테고리의 다른 글
Transaction - Block layer (0) | 2010.07.22 |
---|---|
Transaction-BlockLayer (0) | 2010.07.19 |
Transaction-Undo (0) | 2010.07.16 |
Transaction001 (0) | 2010.07.13 |
'10.03.20 story (0) | 2010.04.01 |