Skip to main content

Optimistic Lock

데이터베이스에서 동시성을 관리하기 위한 방법 중 하나로, Application-level Lock에서 이루어진다. Pessimistic Lock과는 달리, 말 그대로 업데이트가 자주 발생하지 않을 것이라는 낙관적인 가정 하에 동작한다.

데이터를 업데이트 할 때 데이터의 버전(또는 시간)이 데이터베이스에 있는 값과 비교해 일치하는 경우 업데이트를 하고, 일치하지 않는 경우 충돌로 가정하고 업데이트가 취소된다.

충돌로 가정된 경우 업데이트를 수행하지 않기 때문에, 이렇게 업데이트 되지 않은 데이터들로 인해 롤백 후 다시 업데이트 해야 할 수 있다. 하지만 데드락의 발생 가능성이 낮고, 데이터를 읽을 때 Lock을 걸지 않기 때문에 읽기 성능이 좋다.

따라서 동시에 읽기 작업이 많고, 상대적으로 쓰기 작업이 적은 경우 적합하다.

Related Links