본문 바로가기

DB/ETC

Intent Lock

의도락킹(Intent Lock)의 목적

서로 달리 로크할  수 있는 단위의 로크에 대한 상이한 단계를 지정하고 최대의 병행성을 얻게 함

즉!, Lock의 단위를 세분화해서 데이터의 접근성을 좀 더 유연하게 해 성능을 높힐 수 있다.

예를들어 T1이 A란 데이터를 READ하고 있다면, T2도 동시에 READ작업이 가능하다.


A.     주어진 트랜잭션이 주어진 튜플에 대해 S-Lock을 얻기 전에 먼저 그 튜플을 포함한 릴레이션에 IS-Lock나 그 이상의lock을 획득해야 함.

B.     주어진 트랜잭션이 주어진 튜플에 대해 X-Lock을 얻기 전에 먼저 그 튜플을 포함한 릴레이션에 IX-Lock나 그 이상의lock을 획득해야 함.


T2

T1

X

SIX

IX

S

IS


X

N

N

N

N

N

 

SIX

N

N

N

N

Y

 

IX

N

N

Y

N

Y

 

S

N

N

N

Y

Y

 

IS

N

Y

Y

Y

Y

 
    



IS : 트랜잭션 T는 튜플이 처리되는 동안 안정성을 보장하기 위해 R의 개개의 튜플에 대해 S-Lock 설정

IX : IS와 동일단지 T R의 개개의 튜플을 갱신할 수 있고 그 튜플에 X-Lock 설정

S : T R에서 병행수행되는 판독은 허용하지만 갱신은 허용되지 않음.

SIX : S IX를 합친 것. T R에서 병행수행되는 판독은 허용하지만 병행수행되는 갱신은 허용하지 않는다

        그리고 T R의 개개의 튜플을 갱신할 수 있고 따라서 그 튜플에 X-Lock을 건다.

X : T R에 어떠한 병행접근도 허용하지 않는다.

'DB > ETC' 카테고리의 다른 글

데이터베이스 정규화  (2) 2014.02.21
NoSQL 정의 특성  (0) 2014.02.21
트랜잭션 ACID  (0) 2014.02.21