Server

[낙관적락/Optimistic Lock]_기본 개념 (비관적 락/PESSIMISTIC 짧은 설명 포함)

Raconer 2024. 2. 15. 00:39
728x90

비관적 락/PESSIMISTIC

동시성 제어를 위한 가장 보편적인 방법
락을 통한 줄세우기

단점

  • 락을 통한 동시성 제어는 불필요한 대기 상태를 만듬
  • 동시성이 빈번하지 않은 쿼리로 인해 다른 쿼리가 대기 된다.

낙관적인락/ Optimistic Lock

동시성 이슈가 빈번하지 않길 기대하고, 어플리케이션에서 제어한다.

단점

  • 실패에 대한 처리를 직접 구현해야 한다.

CAS(Compare And Set)을 통해 제어

  • Compare/비교 그리고 Set/설정
  • 비교해서 맞으면 설정 틀리면 설정 안한다.

예)

이름 잔액 버전
홍길동 1000 1
  1. 트랜잭션_1 READ_홍길동 잔고 -> 1000, (1)
  2. 트랜잭션_2 READ_홍길동 잔고 -> 1000, (1)
  3. 트랜잭션_1 UPDATE(홍길동 잔고 -100), (2) WHERE 버전 = 1
  4. 트랜잭션_1 UPDATE(홍길동 잔고 -100) WHERE 버전 = 1
728x90

'Server' 카테고리의 다른 글

Session 이란?  (0) 2024.02.24
동시성 제어  (0) 2024.02.18
[비관적인락/PESSIMISTIC]_쓰기락 테스트  (0) 2024.02.06
[비관적인락/PESSIMISTIC]_쓰기락과 읽기락  (0) 2024.02.06
[디자인 패턴] 추상 팩토리 패턴  (0) 2024.02.03