LinkedIn

비관적 락, 낙관적 락

2020. 11. 12. 15:38 | 자바 개발자되기

Pessimistic Lock(비관적 락)

  • 자원에 대한 동시성이 발생하 것이라보고 자원에 접근 할 때 Lock을 걸어 해당 자원을 선점하는 형태
  • 일반적으로 많이 사용하는 형태의 락이지만 교착 상태와 같은 문제를 발생시킬 수 있음

Optimistic Lock(낙관적 락)

  • 자원을 미리 선점하지 않고 변경할 때 Version을 확인하여 동시성을 제어하는 방식
  • UPDATE DUAL SET VERSION = VERSION + 1 WHERE VERSION = 1
    • 업데이트 시 버전 정보를 넘겨서 해당 버전으로 데이터가 존재할 시 업데이트 진행하고 이미 다른 처리에 의하여 버전이 달라졌을 경우 에러를 발생시킴
    • 에러가 발생했을 경우 Application level에서 후처리 진행