728x90
비관적 락/PESSIMISTIC
동시성 제어를 위한 가장 보편적인 방법
락을 통한 줄세우기
단점
- 락을 통한 동시성 제어는 불필요한 대기 상태를 만듬
- 동시성이 빈번하지 않은 쿼리로 인해 다른 쿼리가 대기 된다.
낙관적인락/ Optimistic Lock
동시성 이슈가 빈번하지 않길 기대하고, 어플리케이션에서 제어한다.
단점
- 실패에 대한 처리를 직접 구현해야 한다.
CAS(Compare And Set)을 통해 제어
- Compare/비교 그리고 Set/설정
- 비교해서 맞으면 설정 틀리면 설정 안한다.
예)
이름 | 잔액 | 버전 |
---|---|---|
홍길동 | 1000 | 1 |
- 트랜잭션_1 READ_홍길동 잔고 -> 1000, (1)
- 트랜잭션_2 READ_홍길동 잔고 -> 1000, (1)
- 트랜잭션_1 UPDATE(홍길동 잔고 -100), (2) WHERE 버전 = 1
- 트랜잭션_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 |