인프런 커뮤니티 질문&답변

BH Kang님의 프로필 이미지

작성한 질문수

재고시스템으로 알아보는 동시성이슈 해결방법

Pessimistic Lock 활용해보기

Lock 해제 시점이 궁금합니다.

작성

·

236

0

안녕하세요!

Lock을 해제하는 시점이 궁금합니다.

아래 단계에서 어느 시점 이전 혹은 이후 인지 알려주시면 감사드리겠습니다.

 

1) 트랜잭션 시작

2) Lock 획득 후 비즈니스 로직 실행

3) 트랜잭션 커밋

 

(혹시, 3번 이전에 Lock을 해제할 경우 이전과 동일한 동시성 문제가 발생할 것 같은데.. 우선 답변부탁드립니다!)

 

답변 2

0

최상용님의 프로필 이미지
최상용
지식공유자

BH Kang 님 안녕하세요.

말씀하신대로 레이스컨디션을 해결하기 위해서는 트랜잭션 커밋후에 락을 해제하여야합니다.
감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

Lock을 해제하는 시점은 일반적으로 트랜잭션이 완료되고 커밋되는 시점, 즉 3) 트랜잭션 커밋 이후에 이루어집니다. 따라서, 비즈니스 로직이 모두 실행된 후 데이터의 일관성을 유지하기 위해 트랜잭션이 성공적으로 끝날 때까지 Lock을 유지합니다. 이는 동시에 발생할 수 있는 다른 트랜잭션들이 해당 데이터에 접근하는 것을 방지하고, 데이터의 안정성과 일관성을 보장하기 위함입니다.

트랜잭션이 커밋되기 이전에 Lock을 해제하는 경우, 커밋되기 전의 데이터가 다른 트랜잭션에 의해 수정될 수 있어 동일한 동시성 문제가 발생할 수 있습니다. 따라서, Lock은 트랜잭션이 완전히 완료되고 커밋된 이후에 해제되어야 안전합니다.

BH Kang님의 프로필 이미지

작성한 질문수

질문하기