Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
작업 사항
close #114
고민한 점들
동시성 이슈를 해결할 수 있는 방법은 다음과 같다.
데이터베이스 수준에서 제약 설정
Lock을 걸기
찾아보았을 때 Lock을 거는건 성능저하와 deadlock의 우려도 있기에 DB column에 Unique 제약조건을 걸어두고 에러가 터졌을 때 이를 핸들링해주는 방식 선택
수정한 코드
⬇️⬇️⬇️⬇️⬇️
중복된 키 에러가
save
할 때 발생하면RuntimeException
에러를 throw 한다. 그럼 GlobalExceptionHandler가 메시지로 서버 log 찍고 Internal Server Error를 응답한다.[Spring Data JPA] JPQL 사용 방법(@Query & nativeQuery & DTO Mapping & function)
참고
동시성이슈 2편
[doorip] 중복 회원가입 동시성 문제 Trouble Shooting
[Database] 낙관적 락 / 비관적 락
안녕하세요. Unique Index 데이터 저장에 대해서 질문드립니다.
[Database] 데이터베이스 락(Lock)의 종류와 역할
분산락으로 해결하는 동시성 문제(이론편)
Lock의 종류 (Shared Lock, Exclusive Lock, Record Lock, Gap Lock, Next-key Lock)
Clustered Index와 Secondary Index