n명이 동시에 db의 데이터값의 증감을 요청하는데(데이터값(정수)+1)

기대했던 결과는 데이터 값 + 요청 수인데

트랜잭션끼리 교통정리가 안되서 n-1의 요청들은 무시되더라구


스프링 기준 @version(낙관적 락)이면 된다길래

테스트코드로 스레드풀 만들어서 동시에 실행해도 같은 결과여서

비관적 락방식으로 적용해서 1개의 트랜잭션이 1개의 데이터 접근시

조회, 수정이 불가하게 해서 해결은했는데


낙관적 락이 업데이트 타이밍에 version 값을 체크하는거라고 알고있거든

그럼 이론 상 뒤에 따라오는 트랜잭션들은 롤백이 되야 할 것 같은데

안되더라구 왜 이문제가 낙관적 락으로 해결할 수 없는걸까......?