SQLP
시험 직전 요약장
판단 기준과 헷갈리는 개념, 대표 예제를 짧게 확인하세요.
트랜잭션 경계와 격리 수준: ACID·COMMIT·READ COMMITTED·SERIALIZABLE
원래 이론 →판단 기준
표를 좌우로 밀어 나머지 열을 확인하세요. 키보드: ←·→, Home·End
| 요구 | 우선 검토 | 핵심 Trade-off |
|---|---|---|
| 일반 OLTP·짧은 업무 Transaction | READ COMMITTED | 반복 Query 결과가 달라질 수 있음 |
| 여러 Query가 동일 시점이어야 하는 Report | READ ONLY | 긴 Snapshot을 위한 Undo 필요 |
| 충돌이 적고 Transaction Snapshot이 필요한 Read/Write 업무 | SERIALIZABLE | ORA-08177과 재시도 비용 |
| 특정 Row를 읽고 변경 권한을 선점 | SELECT FOR UPDATE | Lock 대기·보유시간 관리 |
| Lost Update 방지 | 조건부 UPDATE·Version·Lock | 업무 규칙에 맞는 별도 설계 필요 |
격리 수준을 높이는 것만으로 중복 요청, 재고 음수, Lost Update 같은 모든 업무 경쟁이 해결되지는 않습니다. Constraint, Lock, Version Column, Idempotency Key를 함께 설계합니다.
헷갈리는 개념
Session은 Client가 Database에 연결해 요청을 보내는 논리적 연결입니다. 하나의 Session 안에서 여러 Transaction을 차례로 실행할 수 있습니다.
도식좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
Session 시작
├─ Transaction 1 → COMMIT
├─ Transaction 2 → ROLLBACK
├─ Transaction 3 → COMMIT
└─ Session 종료
Transaction은 Session 전체가 아니라 하나의 논리적 업무 변경 단위입니다.
SQL좌우로 이동해 전체 내용을 확인하세요. 키보드: ←·→, Home·End
UPDATE account
SET balance = balance - 10000
WHERE account_id = 1;
UPDATE account
SET balance = balance + 10000
WHERE account_id = 2;
INSERT INTO transfer_history(
transfer_id, from_account, to_account, amount, created_at
)
VALUES (
transfer_seq.NEXTVAL, 1, 2, 10000, SYSTIMESTAMP
);
COMMIT;
출금만 먼저 Commit하면 입금이나 이력 기록 실패 시 업무 불변식이 깨집니다. Commit 위치는 처리 Row 수가 아니라 함께 성공해야 하는 업무 범위를 기준으로 정합니다.
내 최근 연습 오답
현재 브라우저의 연습 채점 기록에서 공개된 단원과 연결된 오답을 확인합니다.
오답 기록을 확인하고 있습니다.