SQLP

시험 직전 요약장

판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.

이론 목록

비관적·낙관적 동시성 제어: FOR UPDATE·Version Column·재시도

원래 이론 →

판단 기준

혼동정확한 기준
낙관적 방식은 Database Lock을 전혀 사용하지 않는다저장 UPDATE 자체는 Row Lock을 사용하며 읽기 단계에서 선점하지 않는 방식
FOR UPDATE OF col은 해당 Column만 잠근다Column은 조인에서 잠글 Table을 식별하며 실제로는 선택된 Row를 잠금
Cursor를 닫으면 FOR UPDATE Lock이 풀린다Lock은 Transaction의 COMMIT 또는 ROLLBACK까지 유지
NOWAIT 오류가 나면 Transaction 전체가 자동 Rollback된다현재 Statement 실패와 Transaction 전체 종료를 구분하고 명시적으로 정리
SKIP LOCKED는 일반 편집 충돌의 해결책이다잠긴 Row를 제외해도 되는 Multi-Consumer Queue에 적합
SQL%ROWCOUNT 0은 항상 Version 충돌이다Row 삭제·업무 조건·권한·Tenant Predicate 불일치도 가능
ROWDEPENDENCIES면 ORA_ROWSCN이 정확한 Commit SCN이다Row-Level 추적이어도 정확한 Commit SCN을 보장하지 않음
같은 SQL을 반복하면 Retry가 안전하다최신 상태 재계산과 Idempotency가 필요

이 부분의 원문 →

헷갈리는 개념

상황기본 처리 방향
Version 불일치최신 상태를 보여 주고 병합·재입력 또는 업무 재계산
짧은 Lock TimeoutTransaction 정리 후 제한적으로 재시도 가능
DeadlockStatement·Transaction 상태를 확인하고 전체 업무 단위를 안전하게 재수행
Validation 실패데이터가 바뀌지 않는 한 재시도해도 해결되지 않으므로 사용자 오류 처리
Network 결과 불명확Idempotency Key로 이미 처리됐는지 먼저 확인

Backoff는 모든 Client가 즉시 동시에 재시도해 다시 충돌하는 현상을 줄입니다. Jitter는 재시도 시점을 분산합니다. 횟수와 총 대기 시간에는 상한을 둡니다.


이 부분의 원문 →

대표 계산·예제

예를 들어 재고 차감 업무라면 다음과 같습니다.

이 부분의 원문 →

내 최근 연습 오답

현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.

학습 기록 →

오답 기록을 확인하고 있습니다.