트랜젝션의 속성

박건태·2023년 7월 22일




1단계




두가지 요청이 동시에 들어온다(1. 결제 실행 2. 포인트 조회)

1번의 요청이 처리되었으므로 바로 조회했을때 5000원의 포인트가 조회된다.
그러나 1번이 그후 취소가 된다면 다시 조회했을때 5000원의 포인트는 조회되지 않는다.


2단계





=> 트랜젝션 진행중 누군가 amount값을 변경하면 같은 쿼리에서 다른 출력값이 나온다.




4단계 (3단계는 mysql에서 디폴트로 차단)









데드락


서로가 서로의 작업이 끝날때까지 기다리면서 락이 걸린상태(엇갈린 락)
1. 로직의 흐름을 한방향으로 통일한다 (유저 -> 쿠폰 -> 포인트 처럼 같은방향)
2. 이미 데드락이 발생하였으면 처리가 늦은 요청을 kill한다.(rollback이 잘되었는지 주의)



2개의 댓글

comment-user-thumbnail
2023년 7월 22일

이해하기 쉽게 포인트와 트랜젝션에 대해서 설명해주셔서 감사합니다. 덕분에 훨씬 많은 걸 배웠어요!

1개의 답글