Spring/JPA
Lock
글을 쓰게 된 계기는 프로젝트 팀원분과의 이야기 중이였습니다. 펀딩 도메인을 개발하는 도중 한 펀딩에 대해 동시에 결제를 한다면 경쟁 상태에서 동시성이 일어나지 않을까? 라는 의문에서 시작되었습니다. 이는 MySQL의 s-lock과 x-lock에 대해 알고 있다면 나온 답이였습니다. 결제가 이루어질 때, 해당 펀딩에 관한 정보를 SELECT 이후 UPDATE가 진행되는 SELECT - FOR UPDATE 쿼리는 해당 레코드에서 X-LCOK을 획득합니다. 이때 X-LOCK은 쓰기락을 의미하며 베타적 락과 동일한 의미입니다. 여기서 X-LOCK을 걸면 다른 트랜잭션은 읽기 락을 얻지 못합니다. 이때 주의해야 할 점은 S-LCCK 입니다. S-LOCK은 읽기락과 동일한 의미로 사용됩니다 S-LOCK은 읽는 동..
2024. 4. 14. 00:50