[정보처리기사 필기] IT프로젝트 정보시스템 구축 관리 - 143. 회복 / 병행제어

1. 회복 Recovery

  • 트랜잭션들을 수행하는 도중 장애가 발생하여 데이터베이스가 손상되었을 때 손상되기 이전의 정상 상태로 복구하는 작업
  • 장애의 유형
    • 트랜잭션 장애 : 입력 데이터 오류, 불명확한 데이터, 시스템 자원 요구의 과다 등 트랜잭션 내부의 비정상적인 상황으로 인하여 프로그램 실행이 중지되는 현상
    • 시스템 장애 : 데이터베이스에 손상을 입히지는 않으나 하드웨어 오동작, 소프트웨어의 손상, 교착상태 등에 의해 모든 트랜잭션의 연속적인 수행에 장애를 주는 현상
    • 미디어 장애 : 저장장치인 디스크 블록의 손상이나 디스크 헤드의 충돌 등에 의해 데이터베이스의 일부 또는 전부가 물리적으로 손상된 상태
  • 회복 관리기 Recovery Management
    • DBMS의 구성 요소
    • 트랜잭션 실행이 성공적으로 완료되지 못하면 트랜잭션이 데이터베이스에 생성했던 모든 변화를 취소(Undo) 시키고, 트랜잭션 수행 이전의 원래 상태로 복구하는 역할을 담당
      • 취소(Undo) : 로그에 보관된 정보를 이용하여 가장 최근에 변경된 내용부터 거슬러 올라가면서 트랜잭션 작업을 취소하여 원래의 데이터베이스로 복구
    • 메모리 덤프, 로그(Log)를 이용하여 회복을 수행
      • 덤프(Dump) : 주기적으로 데이터베이스 전체를 복사해두는 것
      • 로그(Log) : 갱신되기 전후의 내용을 기록하는 별도의 파일, 저널(Journal)이라고도 함

2. 회복 기법

  • 연기 갱신 기법 Deferred Update
    • 트랜잭션이 성공적으로 완료될 때까지 데이터베이스에 대한 실질적인 갱신을 연기하는 방법
    • 트랜잭션이 수행되는 동안 갱신된 내용은 일단 Log에 보관
    • 트랜잭션의 부분 완료(성공적인 완료 직전) 시점에 Log에 보관한 갱신 내용을 실제 데이터베이스에 기록
    • 트랜잭션이 부분 완료되기 전에 장애가 발생하여 트랜잭션이 Rollback되면 트랜잭션이 실제 데이터베이스에 영향을 미치지 않았기 때문에 어떠한 갱신 내용도 취소시킬 필요없이 무시하면 됨
    • Redo 작업만 가능
  • 즉각 갱신 기법 Immediata Update
    • 트랜잭션이 데이터를 갱신하면 트랜잭션이 부분 완료되기 전이라도 즉시 실제 데이터베이스에 반영하는 방법
    • 장애가 발생하여 회복 작업할 경우를 대비하여 갱신된 내용들은 Log에 보관시킴
    • 회복 작업을 할 경우에는 Redo와 Undo 모두 사용 가능
  • 그림자 페이지 대체 기법 Shadow Paging
    • 갱신 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성하여 각 페이지마다 복사본인 그림자 페이지로 별도 보관해놓고, 실제 페이지를 대상으로 트랜잭션에 의한 갱신 작업을 하다가 장애가 발생하여 트랜잭션 작업을 Rollback시킬 대, 갱신된 이후의 실제 페이지 부분에 그림자 페이지를 대체하여 회복시키는 기법
    • 로그, Undo 및 Redo 알고리즘이 필요없음
  • 검사점 기법 Check Point
    • 트랜잭션 실행 중 특정 단계에서 재실행할 수 있도록 갱신 내용이나 시스템에 대한 상황 등에 관한 정보와 함께 검사점을 로그에 보관
    • 장애 발생 시 트랜잭션을 전체를 철회하지 않고 검사점부터 회복 작업을 하여 회복시간을 절약하도록 하는 기법

3. 병행제어 Concurrency Control

  • 다중 프로그램의 이점을 활용하여 동시에 여러 개의 트랜잭션을 병행 수행할 때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호 작용을 제어
  • 다중 프로그래밍의 이점
    • 프로세서의 이용률 증가
    • 전체 트랜잭션의 작업 처리율 향상
  • 병행제어의 목적
    • 데이터베이스의 공유를 최대화
    • 시스템의 활용도를 최대화
    • 데이터베이스의 일관성을 유지
    • 사용자에 대한 응답 시간을 최소화

4. 병행제어 기법의 종류

  • 로킹 Locking
    • 주요 데이터의 액세스를 상호 배타적으로 하는 것
    • 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 Lock(잠금)을 요청해서 Lock이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법
    • 로킹 단위 Locking Franularity
      • 병행제어에서 한꺼번에 로킹할 수 있는 객체의 크기를 의미
      • 데이터베이스, 파일, 레코드, 필드 등이 로킹 단위가 될 수 있음
      • 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만 병행성 수준이 낮아지고, 로킹 단위가 작으면 로크 수가 많아 관리하기 복잡해 오버헤드가 증가하지만 병행성 수준이 높아짐
      • 병행성 수준이 낮다는 것은 데이터베이스 공유도가 감소한다는 의미, 병행성 수준이 높다는 것은 데이터베이스 공유도가 증가한다는 의미
  • 타임 스탬프 순서 Time Stamp Ordering
    • 직렬성 순서를 결정하기 위해 트랜잭션 간의 처리 순서를 미리 선택하는 기법들 중에서 가장 보편적인 방법
    • 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 시간표(Time Stamp)를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법
    • 교착상태가 발생하지 않음
  • 최적 병행수행
    • 검증 기법, 확인 기법, 낙관적 기법
    • 병행수행하고자 하는 대부분의 트랜잭션이 판독 전용(Read Only) 트랜잭션일 경우, 트랜잭션 간의 충돌률이 매우 낮아서 병행제어 기법을 사용하지 않고 실행되어도 이 중의 많은 트랜잭션은 시스템의 상태를 일관성 있게 유지한다는 점을 이용한 기법
  • 다중 버전 기법
    • 타임 스탬프의 개념을 이용하는 기법
    • 다중 버전 타임 스탬프 기법
    • 타임 스탬프 기법은 트랜잭션 및 데이터들이 이용될 때의 시간을 시간표로 관리하지만, 다중 버전 기법은 갱신될 때마다의 버전을 부여하며 관리