다음 SQL처럼 읽을 때 얻은 version 값이 그대로일 때만 갱신하고, 영향받은 행이 0개이면 충돌로 처리한다. 장시간 잠금을 유지하지 않고 버전 비교로 충돌을 검출하는 기법의 명칭을 쓰시오.
-- 조회 시 version = 8
UPDATE DOCUMENT
SET body = :body, version = 9
WHERE id = :id AND version = 8;모범답안
낙관적 잠금(Optimistic Locking)
풀이와 판단 근거
낙관적 잠금은 충돌이 드물다고 가정하고 데이터를 읽는 동안 배타 잠금을 계속 잡지 않는다. 대신 조회한 version을 UPDATE 조건에 포함해 다른 트랜잭션이 먼저 갱신했는지 확인한다.
영향받은 행이 0개이면 version이 달라진 것이므로 충돌로 처리해 다시 조회하거나 사용자에게 재시도를 요구한다.
자주 틀리는 지점
- SELECT부터 UPDATE까지 배타 잠금을 유지하는 비관적 잠금으로 답함
- version 조건 없이 마지막 UPDATE가 항상 덮어쓰게 함
- 영향받은 행이 0개여도 성공으로 처리
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.