사용자들이 같은 데이터를 동시에 수정할 것이라고 가정을 합니다
충돌이 발생할 가능성을 고려하여 미리 락을 걸고 작업을 수행합니다.
락으로 인한 오버헤드가 크기 때문에 낙관적 락보다는 느릴 수 있습니다.
-> wait 또는 nowait 옵션과 함께 사용해야 합니다.
비관적 락 종류로는 공유락
과 배타적 락
이 있습니다.
데이터를 읽을 때 사용되는 락입니다.
여러 트랜잭션이 동시에 접근하여 데이터를 읽을 수를 있지만, 쓰기는 불가능한 상태입니다.
-> 어떤 자원에 공유락이 동시에 여러개 적용될 수 있습니다.
일반적으로 SELECT를 할 때 공유락이 발생합니다.
특징
데이터 변경(쓰기 작업)에서 주로 사용되는 락
한 트랜잭션이 쓰기 작업을 수행하는 동안 다른 트랜잭션은 해당 데이터에 접근할 수 없는 상태
특징