개요

CUBRID가 사용하는 2단계 잠금 프로토콜(2-phase locking protocol)에서는, 충돌하는 연산이 동시에 수행되지 않도록 하기 위해, 트랜잭션은 객체를 읽기 전에 공유 잠금(shared lock)을 획득하고 객체를 갱신하기 전에는 배타 잠금(exclusive lock)을 획득한다.

트랜잭션 T1이 잠금을 요청하면 CUBRID는 요청한 잠금이 기존 잠금과 상충하는지 검사한다. 상충한다면, 트랜잭션 T1은 대기 상태가 되어 잠금을 지연한다. 다른 트랜잭션 T2가 그 잠금을 해제하면 트랜잭션 T1이 재개하면서 잠금을 획득한다. 일단 잠금이 해제되면 더 이상의 새로운 잠금을 요청하지 않는다.