← 회차 전체 문제편집복원내용 검수 완료2023년 정보처리기사 3회 필기 · 데이터베이스 구축 · 43번
두 트랜잭션이 주문 행의 같은 버전 값 7을 읽은 뒤 각각 수정했다. 먼저 한 트랜잭션이 버전 8로 갱신한 상황에서, 나중 트랜잭션의 오래된 값 덮어쓰기를 직접 탐지하고 막는 방법으로 가장 적절한 것은?
- 1
잠금 대기 제한시간만 늘린다.
오답 이유대기 제한시간은 잠금 대기의 종료 시점을 조절할 뿐 오래된 버전으로 덮어쓰는지를 검증하지 않는다. - 2
트랜잭션 격리 수준을 READ UNCOMMITTED로 낮춘다.
오답 이유READ UNCOMMITTED는 커밋되지 않은 값까지 읽을 수 있게 하므로 갱신 충돌을 막지 못하고 일관성을 더 약화한다. - 3
UPDATE의 조건에 version = 7을 포함하고 영향받은 행 수가 0이면 충돌로 처리한다.
정답 근거낙관적 잠금의 버전 비교 방식이다. 먼저 갱신된 행은 더 이상 version = 7이 아니므로 두 번째 쓰기가 실패하고 충돌을 탐지할 수 있다. - 4
현재 버전을 다시 확인하지 않고 나중 요청의 값으로 항상 덮어쓴다.
오답 이유마지막 쓰기를 무조건 허용하면 먼저 반영된 변경이 사라지는 갱신 분실을 그대로 발생시킨다.
정답·상세해설정답 3번
버전 조건을 포함한 갱신은 먼저 처리된 트랜잭션이 버전을 8로 바꾸면 두 번째 UPDATE의 version = 7 조건을 만족하지 않게 한다. 영향받은 행 수 0을 충돌로 판단하면 오래된 값이 최신 값을 덮는 갱신 분실을 방지할 수 있다.
콘텐츠 기록콘텐츠 정보
- 자료 유형
- 편집복원
- 검수 상태
- 내용 검수 완료
- 최종 검수
- 2026-08-21