동시성 문제란 하나의 공유 데이터를 2개 이상의 쓰레드, 또는 세션에서 동시에 조작할 때 발생하는 문제입니다.
하나의 쓰레드가 데이터를 수정중일 때 아직 변경사항이 반영되지 않은 상태에서 다른 쓰레드가 변경 이전 데이터를 조회해서 변경시킬 수 있어 이러한 문제가 발생합니다.
동시성 문제가 발생하는 경우
.png)
위 사진과 같이 두개의 쓰레드가 하나의 값을 변경할 때 1번 쓰레드가 재고를 조회하고 재고를 감소시키는 과정중에 2번 쓰레드가 아직 감소가 반영되기 전 데이터를 똑같이 조회해서 감소시키기 때문에 결과적으로는 1번만 감소가 일어나는 것을 확인할 수 있습니다.
MySQL을 활용한 Lock