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

hayejun1013님의 프로필 이미지
hayejun1013

작성한 질문수

스프링 DB 1편 - 데이터 접근 핵심 원리

DB 락 - 개념 이해

질문 있습니다.

작성

·

2.6K

4

동시성 프로그래밍에서 발생할 수 있는 데이터 정합성이 깨지는 것을 방지하기 위해 DB에서는 락을 도입했다는 부분을 잘 이해했습니다.

수업 내용 중에 memberA의 계좌를 세션1과 세션2에서 각각 500원과 1000원으로 변경하려고 시도하는 부분에서, 세션1이 먼저 락을 획득하고 500원으로 커밋한 다음에 세션2가 1000원으로 수정하였습니다.

제가 생각하기에 세션2가 계좌를 1000원으로 수정하려는 시도는, 계좌가 10000원인 상태에서 비즈니스 로직에 따라 데이터를 변경하려고 했다고 생각합니다. 따라서 세션2가 락을 획득했을 때 기존 계좌의 데이터가 변경되었다면, 이미 세션2의 트랜잭션이 시작되어 락을 요청한 상태여도, 획득한 락을 받아들여 그대로 트랜잭션을 실행하지 않고 다시 비즈니스 로직을 검토하는 과정이 필요할 것으로 생각 됩니다.

이러한 문제점이 발생했을 때 개발자가 취할 수 있는 방법이 있을까요?

답변 1

3

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. hayejun1013님 좋은 질문입니다.

하지만 이 질문은 어쩌면 조금은 놀랍게도 일반적인 트랜잭션의 범위를 벗어나는 질문입니다.

다음을 참고해주세요.

https://www.inflearn.com/questions/228082

감사합니다.

hayejun1013님의 프로필 이미지
hayejun1013
질문자

답변 감사합니다

hayejun1013님의 프로필 이미지
hayejun1013

작성한 질문수

질문하기