1단계 로킹 규약/2단계 로킹 규약

최성욱·2025년 3월 11일
0

1단계 로킹규약

DBMS는 기본적으로 직렬화를 보장하기 위해 Lock을 사용한다

  1. 트랜잭션 T1, T2가 있을 때, T1이 Lock(X)을 실행하고, X의 값을 변경, 저장한 이후에 Lock(Y), Unlock(X)를 수행
  2. T2가 Lock(X) 수행하고, X의 값을 변경하고 X를 저장
  3. T1이 Y의 값을 변경, 저장한 후에 Unlock(Y)를 수행
  4. T2가 Lock(Y)을 수행, Y의 값을 변경, 저장한 이후에 Unlock(Y) 수행

다음 그림에 봤을 때, T1 -> T2 순으로 직렬성이 보장되는 트랜잭션이면, T1이 X,Y의 값을 1000 증가 한 이후에, T2가 50% 감소시키기 때문에 X=2000, Y=2000이 되야 데이터의 무결성이 깨지지 않는다.
하지만, T1의 입장에서보면 X를 읽을 때에는 최초의 트랜잭션이 시작되기 전의 값을 참조하고 있지만, Y는 T2가 변경한 Y의 값을 참조하고 있기 때문에 무결성이 깨지는 것이다.
그리하여, 트랜잭션이 Unlock하기 전에 모든 Lock을 획득한 후에, Unlock을 가능하도록 하면 직렬성을 보장할 수 있다.

2단계 로킹 규약

트랜잭션 T1, T2입장에서 보면 Unlock을 하기 전에 모든 Lock연산을 수행하고 있기 때문에, 직렬성을 보장하고 데이터의 무결성이 깨지지 않는다

profile
성장을 지향하는 개발자

0개의 댓글