[2023 정보처리기사] 3과목 – 14. 병행제어, 회복

1. 병행제어(Concurrency Control)

  1. 1. 병행제어의 뜻

: 동시에 수행되는 트랜잭션들을 일관성 있게 처리하기 위해 제어하는 것.

  1. 2. 병행제어의 목적

– 데이터베이스의 공유, 일관성을 최대화.

– 시스템 활용도 최대화.

– 사용자에 대한 응답시간을 최소화.

1. 3. 병행제어의 문제점

  • 갱신 분실(Lost Update): 두 개 이상의 트랜잭션이 같은 자료를 공유하여 갱신할 때 갱신 결과의 일부가 없어짐.
  • 모순성(Inconsistency): 두 개의 트랜잭션 수행 시 원치 않는 자료를 이용하면서 문제 발생. 여러 데이터를 가져올 때 발생.
  • 비완료 의존성(Uncommitted Dependency): 하나의 트랜잭션이 실패하고 회복하기 전에 다른 트랜잭션이 실패한 결과를 참조.
  • 연쇄복귀(Cascading Rollback): 병행수행된 트랜잭션들 중 어느 하나의 문제가 생겨 Rollback할 때, 다른 트랜잭션도 같이 복귀됨.

  1. 4. 병행제어의 기법

  • 로킹(Locking): 트랜잭션이 어떤 데이터에 접근하고자 할 때 잠금(Locking)수행.

로킹단위가 작을수록 로크 수 증가, 병행성⋅공유도 증가, 오버헤드 증가.

로킹단위가 작을수록 로크 수 감소, 병행성⋅공유도 감소, 오버헤드 감소.

  • 타임스탬프(Time Stamp): 데이터에 접근하는 시간을 미리 정해서 정해진 시간의 순서대로 작업.

 

2. 회복(Database Recovery)

  2. 1. 지연 갱신 회복 기법(Deferred Update)

– 모든 변경 내용을 로그 파일에만 저장하고, Commit이 발생하기 전까지는 DB에 기록하지 않음.

– 중간에 장애가 생겨도 DB에 기록되지 않으므로 UNDO 불필요.

REDO만 수행

  2. 2. 즉시 갱신 회복 기법(Immediate Update)

– 트랜잭션 수행 도중 변경내용을 즉시 DB에 기록.

– Commit이 발생하기 이전의 갱신은 원자성이 보장되지 않는 미완료 갱신이므로, 장애 발생시 UNDO 필요.

UNDO수행 후, 완료된 변경에 대해 REDO 수행

Leave a Comment