트랜잭션·로킹·회복 기법 판단법
ACID, 동시성 이상, 2단계 로킹과 로그 회복을 하나의 실행 흐름으로 연결합니다.
관련 시험 정보처리기사SQLD9급 컴퓨터일반
ACID와 동시성 이상
원자성은 전부 수행하거나 전부 취소하는 성질, 일관성은 트랜잭션 전후 제약조건 유지, 고립성은 동시 실행 결과가 직렬 실행처럼 보이는 성질, 지속성은 커밋 결과의 영구 보존을 뜻합니다.
- 갱신 분실은 두 트랜잭션의 변경 중 하나가 덮이는 현상이다.
- 오손 읽기는 커밋되지 않은 값을 읽는 현상이다.
- 반복 불가능 읽기와 팬텀 읽기는 같은 행의 값 변화와 조건 범위의 행 집합 변화를 구분한다.
로킹과 직렬 가능성
공유 잠금은 읽기, 배타 잠금은 쓰기에 사용합니다. 2단계 로킹은 잠금을 얻는 확장 단계와 잠금을 해제하는 축소 단계를 겹치지 않게 해 충돌 직렬 가능성을 보장합니다.
- 로킹 단위를 크게 하면 관리 비용은 줄지만 동시성도 줄어든다.
- 교착상태는 대기 그래프 탐지나 타임아웃 등으로 처리한다.
- 엄격한 2단계 로킹은 커밋·롤백까지 배타 잠금을 유지해 연쇄 복귀를 줄인다.
로그와 회복
WAL은 데이터 페이지보다 관련 로그를 먼저 안정 저장장치에 기록하는 원칙입니다. 즉시 갱신은 커밋 전 변경이 디스크에 반영될 수 있어 REDO와 UNDO를 모두 고려하고, 지연 갱신은 커밋 후 반영하므로 주로 REDO가 필요합니다.
- 체크포인트는 회복 시 확인할 로그 범위를 줄인다.
- UNDO는 미완료 트랜잭션의 변경을 되돌린다.
- REDO는 커밋된 변경이 빠졌을 때 다시 적용한다.
시험에 바로 쓰는 비교표
| 항목 | 커밋 전 데이터 반영 | 회복 핵심 | 출제 포인트 |
|---|---|---|---|
| 즉시 갱신 | 가능 | UNDO + REDO | WAL 준수 |
| 지연 갱신 | 하지 않음 | REDO 중심 | 커밋 후 데이터 반영 |
| 검사점 | 방식과 무관 | 탐색 범위 축소 | 로그 전체를 처음부터 읽지 않음 |
지문 표현을 판단 기준으로 바꾸기
- 잠금 획득 후 해제, 다시 획득하지 않음 → 2단계 로킹
- 로그를 데이터보다 먼저 기록 → WAL
- 커밋하지 않은 값 읽기 → 오손 읽기
자주 틀리는 판단
- 원자성과 지속성을 같은 의미로 판단
- 로킹 단위가 작을수록 관리 비용도 작다고 판단
- 즉시 갱신과 지연 갱신의 UNDO·REDO 필요성을 반대로 기억
개념을 확인했다면 실제 문제에서 판단 기준을 적용해보세요.
분야별 문제 풀기