(2/3) (feat. Database Lock)
* 관련 기술 스택이 없습니다

• 동시성 처리를 위해 데이터베이스에서 제공하는 Lock을 사용하는 방법을 소개하였다. 이는 트랜잭션 충돌을 방지하기 위해 데이터에 Lock을 걸어 정합성을 유지하는 방법이다.
• 데이터 갱신시 충돌이 발생하지 않을 것으로 예상하고(낙관적) 잠금을 거는 방법을 소개하였다. 이는 실제로 Lock을 이용하지 않고 버전을 이용하여 정합성을 유지하는 방법이다.
• 테스트 코드에서 실제 결과 값과 기대 값이 다른 것을 확인하였고, 이는 Transactional이 원인으로 파악되었다. Transactional은 충돌이 발생했을 경우 rollback을 시키는데, 이 과정에서 Exception으로 넘어가지 않고 rollback되어 재시도를 하지 못하는 문제가 발생했다.
• 이 문제를 해결하기 위해 AOP를 이용하여 Transactional이 에러가 발생해 rollback 되기 전 처리해야 되는 프로세스를 추가하였다. 이를 통해 정상적으로 값이 줄어드는 것을 확인하였다.

북마크
공유하기
신고하기