데이터베이스 기초
트랜잭션 T1이 어떤 행에 공유 락을 걸고 읽고 있다. 이 행에 대해 T2가 공유 락을, T3가 배타 락을 요구했다. T1이 락을 해제할 때까지의 동안에 대해 올바른 것은?
- AT2는 바로 락을 얻을 수 있지만 T3는 기다리게 된다
- BT2도 T3도 기다리게 된다
- CT2도 T3도 바로 락을 얻을 수 있다
정답과 해설 보기
정답: A. T2는 바로 락을 얻을 수 있지만 T3는 기다리게 된다
공유 락은 데이터를 읽을 때 거는 락으로, 다른 트랜잭션도 같은 데이터에 공유 락을 걸어 동시에 읽을 수 있지만, 쓰기를 위한 배타 락은 걸 수 없습니다. 배타 락은 데이터를 갱신할 때 거는 락으로, 걸려 있는 동안 다른 트랜잭션은 공유 락도 배타 락도 걸 수 없습니다. 이 예에서는 T1의 공유 락과 T2의 공유 락이 양립하므로 T2는 바로 락을 얻어 읽을 수 있습니다. T3의 배타 락은 T1의 공유 락과 양립하지 않으므로 T1이 락을 해제할 때까지 기다리게 됩니다(T2도 공유 락을 가지고 있다면 T2의 해제도 기다립니다). 이처럼 락을 사용하여 동시에 실행되는 트랜잭션끼리의 간섭을 막는 것을 동시성 제어(배타 제어)라고 합니다.