728x90
💡 주제: Lock, Deadlock, 로그 기반 회복(Undo/Redo)의 개념과 방식
🧩 오늘의 학습 목표
- 병행 제어의 필요성과 동시성 문제를 이해한다
- 로킹(Locking)과 교착 상태(Deadlock)를 설명할 수 있다
- 데이터베이스 회복 기법(Undo, Redo, 로그 기반)의 흐름을 이해한다
🎯 이론 설명
✅ 1. 병행 제어 (Concurrency Control)
병행 제어란?
여러 사용자가 동시에 데이터베이스에 접근할 때, 데이터 무결성을 지키기 위한 제어 방식입니다.
트랜잭션이 동시에 실행될 경우 발생할 수 있는 문제를 방지합니다.
🔹 병행 실행 시 발생 가능한 문제
문제설명
갱신 손실 (Lost Update) | 두 트랜잭션이 같은 데이터를 갱신 → 마지막만 반영됨 |
모순 읽기 (Inconsistent Read) | 하나의 트랜잭션이 처리 중인 데이터를 다른 트랜잭션이 읽음 |
더티 리드 (Dirty Read) | 커밋되지 않은 데이터를 읽음 |
반복 불가능한 읽기 (Non-repeatable Read) | 같은 쿼리를 다시 수행했을 때 결과가 다름 |
✅ 2. 로킹(Locking)과 2단계 로킹(2PL)
Lock(잠금): 트랜잭션이 특정 데이터에 접근하는 것을 다른 트랜잭션이 막는 기능
🔸 Lock의 종류
종류설명
공유 잠금 (S-Lock) | 읽기 전용 (다른 읽기 가능, 쓰기 불가) |
배타 잠금 (X-Lock) | 읽기/쓰기 모두 가능, 다른 트랜잭션 접근 차단 |
🔸 2단계 로킹 프로토콜 (2PL, Two-Phase Locking)
- 확장 단계: 필요한 Lock을 모두 획득
- 축소 단계: Lock 해제만 가능, 새로운 Lock 획득 불가
➤ 모든 트랜잭션이 2PL을 따르면 **직렬 가능성(Serializability)**을 보장할 수 있음
✅ 3. 교착 상태 (Deadlock)
**Deadlock(교착 상태)**는 두 트랜잭션이 서로 필요한 자원을 점유한 채 영원히 기다리는 상태
🔸 해결 방법
- 발생 방지: 자원 순서 지정, 타임아웃 설정
- 발생 회피: Wait-Die, Wound-Wait 방식
- 발생 후 회복: 트랜잭션 중단 후 Rollback
✅ 4. 회복 기법 (Recovery)
트랜잭션 처리 중 시스템 장애가 발생했을 때 데이터를 복구하는 방법
🔸 로그(Log)를 이용한 회복
모든 변경 내용을 로그 파일에 기록해두고 복구에 사용
방식설명
Undo | 장애 발생 전의 상태로 복원 (롤백) |
Redo | 완료된 작업을 다시 실행하여 반영 (재적용) |
Undo/Redo 병행 | 상황에 따라 둘 다 수행 가능 |
📌 트랜잭션 처리 과정에서 로그 기록 순서:
- 트랜잭션 시작
- 데이터 변경 전/후 로그 기록
- COMMIT 또는 ROLLBACK 로그
- 장애 발생 시 로그를 보고 복원 수행
📝 기출문제 예제
문제: 트랜잭션 중 하나가 커밋되지 않은 데이터를 다른 트랜잭션이 읽은 경우를 무엇이라 하는가?
① Lost Update
② Inconsistent Read
③ Dirty Read
④ Non-repeatable Read✅ 정답: ③
🧠 해설:
- Dirty Read는 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 상황
- 트랜잭션이 롤백되면 읽은 데이터도 잘못된 값이 됨
💡 오늘의 정리 포인트
- 병행 제어는 데이터 무결성과 일관성을 보장하는 필수 기법
- Lock은 충돌을 방지하고, 2PL은 직렬 가능성을 보장
- Deadlock은 자원 경합에서 발생 → 방지 및 회복 기법 이해 필수
- 장애 복구는 로그 기반 Undo/Redo 기법 사용
728x90
'정보처리기사' 카테고리의 다른 글
📘 [11일차] 데이터베이스 보안과 백업 복구 전략 완전 정리 (0) | 2025.05.09 |
---|---|
📘 [10일차] 뷰(View), 인덱스(Index), 클러스터링(Clustering) 완전 정리 (0) | 2025.05.08 |
📘 [8일차] 이상 현상과 정규화 심화 – 삽입/삭제/갱신 이상 (1) | 2025.05.06 |
📘 [7일차] 관계 대수와 관계 해석 완전 정리 (0) | 2025.05.04 |
📘 [6일차] 트랜잭션과 무결성 제약조건 완전 정복 (0) | 2025.05.03 |