Engineering Note

[Database] Pessimistic Lock(비관적 락)과 Optimistic Lock(낙관적 락) 본문

Computer Science/Database

[Database] Pessimistic Lock(비관적 락)과 Optimistic Lock(낙관적 락)

Software Engineer Kim 2025. 8. 13. 17:57

 

낙관적 락은 충돌 발생 가능성이 낮다고 가정하고 실제 데이터 수정시점에 충돌이 발생했는지 확인하고 처리하는 방식이다. 이 방식은 데이터베이스 자체의 잠금 방식을 사용하는 것이 아니라 데이터 버전 정보를 통해 애플리케이션 레벨에서 비교하는 방식을 통해 동시성을 제어 하는 방법이다. 

 

반면 비관적 잠금은 'SELECT ... FOR UPDATE'와 같이 쿼리를 사용해 직접 데이터 레벨에서 직접 잠금을 통해 동시성 제어를 방지하는 방법이다. 여러 트랜잭션이 동시에 같은 데이터를 수정하려고 할 때 충돌이 발생할 것이라고 '비관적으로' 가정하고, 데이터를 읽는 시점부터 잠금을 거는 방식입니다. 이렇게 하면 데이터가 수정되는 동안 다른 트랜잭션이 접근할 수 없으므로 동시성 문제를 확실하게 방지할 수 있습니다.

 

 

Comments