의도락킹(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 |