비관적 락

    Lock 정리(낙관적 락과 비관적 락, 분산락, 데드락) 및 활용까지

    낙관적 락(optimistic Lock) - 충돌이 발생하지 않는다고 낙관적이라고 가정함. - DB가 제공하는 락 기능이 아니라 어플리케이션에서 제공하는 버전관리 기능을 사용함. - version 등의 구분칼럼을 사용하여 충돌방지 - 트랜잭션을 커밋하는 시점에 충돌을 알 수 잇다. - 최근 업데이트 과정에서만 락을 점유하기 때문에 락 점유시간을 최소화하여 동시성을 높일 수 있다. 예) 1. A가 먼저 접근 후 바로 뒤이어 B가 접근한다. 2. A가 해당 ROW와 version 을 업데이트한다. 3.B가 커밋 시점에 해당 ROW를 업데이트하려고 version을 체크해보니 처음과 다른 경우 어플리케이션은 예외를 발생시키고 첫번째 A의 커밋만 적용하여 정합성을 유지한다. 4. 실패된 커밋을 어플리케이션에서 후..