비관적(Pessimistic) 락
- 단어의 의미 그대로 어떠한 처리를 위해서 Lock을 점유하고 해제하는 정책이
비관적인 가정(내가 업데이트하려고 하는 레코드를 다른 사용자도 업데이트하려고 할 것이다)하에서
이루어지는 형태 - 예를 들어서, 어떤 업데이트 작업을 하려고 하는데, 이 작업을 위해서 먼저 검색이 필요하다고 가정해보자.
이때, 비관적 락 기반으로 작성된 로직이라면, 검색하기 전부터 락을 먼저 점유하고 모든 작업을
진행하게 될 것이다. - 이 방식은 각 프로세스들의 락 점유 시간을 연장시키기 때문에 동시성이 떨어지게 된다.
- 대신 Deadlock의 발생 가능성이 낮아지게 된다.
낙관적(Optimistic) 락
- 낙관적 락은 비관적 락과 거의 반대 개념으로 생각하면 될듯 하다.
(내가 업데이트하려고 하는 레코드를 다른 사용자는 접근하지 않을 것이다.) - 위의 업데이트 시나리오로 비교해본다면, 낙관적 락은 검색은 그냥 진행하고,
최종 업데이트 하는 과정에서만 락을 점유하게 된다. - 낙관적 락은 락 점유 시간을 최소화하기 때문에 동시성이 좋아지게 된다.
- 하지만, 뒤늦은 락 점유로 인해서 Deadlock의 가능성이 높아지게 된다.
댓글 없음:
댓글 쓰기