일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 백준
- mysql
- Real MySQL
- Kotlin
- thread
- 스프링
- 자바
- 이스티오
- redis
- MSA
- JPA
- GC
- Collection
- 스트림
- IntellJ
- 쿠버네티스
- spring
- 보조스트림
- Stack
- OS
- list
- Java
- K8s
- Stream
- jvm
- gradle
- 토비의 스프링
- 토비의 스프링 정리
- SpringBoot
- 자바 ORM 표준 JPA 프로그래밍
Archives
- Today
- Total
목록비관적 락 (1)
인생을 코딩하다.
[SPRING, DATABASE] 상품 주문 시, Pessimistic Lock으로 동시성 제어
안녕하세요. 오늘은 Pessimistic Lock으로 동시성 제어를 하는 법에 관해 글을 작성해보려 합니다. 저는 상품을 주문하는 API를 개발하고 있었습니다. 여러 사용자가 동시다발적으로 상품을 주문 할 때, 데이터 정합성에 이슈가 발생하는 문제였습니다. 위의 그림처럼 세 명의 사용자가 동시다발적으로 주문을 요청할 시 상품의 총 재고는 70이 되어야하지만, 주문이 동시에 일어나는 바람에 70이 아닌 90이 되어버리는 상황입니다. 총 (10 + 10 + 10)30의 재고가 차감되어야 하지만, 동시에 요청이 일어나서 10의 재고만 차감이 되어버리는 이슈입니다. 이걸 어떻게 해결할 수 있을까요? 이것은 간단하게 JPA의 비관적 락(Pessimistic Lock), 혹은 낙관적 락(Optimistic Lock..
Spring
2022. 5. 14. 04:01