Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

낙관적 락

  • 충돌이 드물다고 가정하고 동시성을 관리하는 방법
  • 버전 번호나 타임 스탬프를 사용하여 데이터가 수정되었는지 검사
  • 장점
    • 충돌이 드문 경우 성능에 큰 부담 없이 동시성 제어
    • 락을 별도로 유지하지 않아서 데이터베이스 락 경합이 적다
  • 단점
    • 충돌 발생 시에 이를 처리하기 위한 추가 로직 필요 (재시도 처리 같은)
  • 사용 : JPA의 낙관적 락: @Version 어노테이션을 사용하여 엔티티의 버전을 관리.

만약 두 개의 트랜잭션이 같은 productId에 대해 동시에 데이터를 수정하려고 할 때, 첫 번째 트랜잭션이 완료된 후 두 번째 트랜잭션이 OptimisticLockException을 발생

트랜잭션 1:

  1. 상품 id = 1의 데이터 조회 (버전 1)
  2. 수량을 10 증가시킴 (버전 1에서 버전 2로 증가)
  3. 트랜잭션 커밋

트랜잭션 2:

  1. 상품 id = 1의 데이터 조회 (버전 1)
  2. 수량을 5 증가시킴 (버전 1에서 버전 2로 증가 시도)
  3. 트랜잭션 커밋 시 버전 충돌 발생 (첫 번째 트랜잭션의 버전 2와 두 번째 트랜잭션의 버전 1이 다르므로 OptimisticLockException이 발생)

-> 이런 흐름으로 적용되는 것

기능 흐름도
회원가입 및 로그인

Image

Image

비밀번호, 의사 이미지 변경

Image

Image

게시글

Image

Image

Image

Image

Image

채팅방

Image

Image

Image

결제

Image

Image

쿠폰

Image

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages