
Auto Increment를 막쓰면 문제가 될 수도..?(with Lock)
·
Spring/JPA
1. 언제 Auto Increment를 사용할 때 문제가 발생하나요?예시 시나리오logs 테이블에는 id 컬럼이 있고, AutoIncrement로 설정되어 있다현재 id의 최댓값이 4라고 가정한다P1 트랜잭션이 시작되어 insert를 3번 실행 → 부여된 ID: 5, 6, 7하지만 아직 P1 트랜잭션은 커밋되지 않은 상태이다동시에 P2, P3도 각각 insert 실행 → 부여된 ID: 8, 9 (이들은 트랜잭션을 커밋함) 문제가 발생할 수 있는 상황이전에 처리한 최대 ID를 구해 lastProcessedId에 저장 (예: 4)현재의 최대 ID를 구해 maxId에 저장 (예: 9)lastProcessedId보다 크고 maxId보다 작거나 같은 ID 목록을 조회해 ids에 저장 (이 시점에는 DB에서 [8,..