SQLP
시험 직전 요약장
판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.
DML Write Consistency: Current 갱신·Statement Restart·Lost Update
원래 이론 →판단 기준
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 업무 특성 | 우선 검토 방식 |
|---|---|
| 단순 증가·감소 | 상대값을 사용하는 원자적 UPDATE |
| 재고·한도처럼 조건과 변경이 결합 | 조건부 UPDATE와 Row Count |
| 사용자가 읽은 뒤 나중에 저장 | Version 또는 원본 값 비교 |
| 짧은 처리 동안 Row 선점 필요 | SELECT FOR UPDATE |
| 중복 업무 요청 차단 | Unique Constraint와 Idempotency Key |
| 다중 Worker Queue | SELECT FOR UPDATE SKIP LOCKED |
| Transaction 전체 Snapshot 필요 | SERIALIZABLE 또는 READ ONLY의 적합성 검토 |
어떤 방식도 이름만 적용해서는 충분하지 않습니다. 충돌 시 대기·실패·재조회·병합·재시도 가운데 무엇을 할지 업무 정책으로 정의해야 합니다.
헷갈리는 개념
Oracle 공식 문서는 마지막 조회 이후 Row가 바뀌지 않았는지 확인하기 위해 원래 값을 WHERE 절에 포함하는 Lost Update 방지 예를 제시합니다.
SQL좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
UPDATE employees
SET email = :new_email,
phone_number = :new_phone
WHERE employee_id = :employee_id
AND email = :old_email
AND phone_number = :old_phone;
대표 계산·예제
Oracle Development Guide는 SELECT FOR UPDATE의 Return Set이 실행 중 변경되면 다음 절차가 일어날 수 있다고 설명합니다.
도식좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
변경되지 않은 Row Lock 획득
→ Lock을 이용해 Read-Consistent Snapshot 확보
→ 남은 Row의 Lock 획득을 위해 Query Restart
이 사례는 Oracle이 문장 일관성과 Lock 집합을 맞추기 위해 Query를 재시작할 수 있음을 보여 줍니다. 다만 이를 모든 일반 UPDATE·DELETE의 공개된 동일 동작 규칙으로 확대 해석해서는 안 됩니다.
내 최근 연습 오답
현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.
오답 기록을 확인하고 있습니다.