ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정보처리기사[실기 핵심 정리] - 병행제어
    용어 정리 2024. 4. 21. 19:20

    병행제어

    1) 병행제어의 개념

    • 여러 트랜잭션이 동시에 실행되면서도 데이터베이스의 일관성을 유지하는 기법
    • 동시에 여러 트랜잭션을 수행할 때, DB의 일관성을 해치지 않도록 트랜잭션 간의 상호 작용을 제어한다.

     

    2) 병행제어의 목적

    • 데이터베이스의 공유도 최대화
    • DB일관성 유지

     

    3) 병행제어의 문제점

    • 갱신 분실(Lost Update)
      • 여러 트랜잭션이 같은 데이터를 공유하여 갱신할 때 일부 갱신 결과가 손실되는 현상
    • 비완료 의존성(Uncommitted Dependency)
      • 실패한 트랜잭션이 회복되기 전에 다른 트랜잭션이 그 결과를 참조하는 현상
    • 모순성(Inconsistency) 
      • 병행 수행 중 원치 않는 자료를 사용함으로써 발생하는 문제
      • 갱신 분실과 비슷해 보이지만 여러 데이터를 가져올 때 발생하는 문제
    • 연쇄 복기(Cascading Rollback)
      • 하나의 트랜잭션이 실패해 롤백되면, 다른 트랜잭션도 함께 롤백되는 현상

     

    4) 병행제어 기법

    • 로킹(Locking)
      • 트랜잭션이 데이터에 접근하려면 로킹을 수행해야 한다
      • 로킹된 데이터는 다른 트랜잭션이 접근할 수 없다
      • 로킹단위 : 필드, 레코드, 파일, 데이터베이스 모두 로킹 단위가 될 수 있음
      • 로킹 단위에 따른 구분
    구분 로크 수 병행성 오버헤드
    로킹 단위가 크면 적어짐 낮아짐 감소
    로킹 단위가 작으면 많아짐 높아짐 증가
    • 2 단계 로킹 규약(Two-Phase Locking Protocol)
      • 확장 단계에서는 새로운 Lock만 가능, 축소단계 에서는 UnLock만 가능하다
      • 확장단계 : 새로운 Lock은 가능하고 Unlock은 불가능하다.
      • 축소단계 : Unlock은 가능하고 새로운 Lock은 불가능하다.
    • 타임 스탬프(Time Stamp)
      • 데이터에 접근하는 시간을 미리 정해 순서도로 접근한다.
      • 직렬가능성을 보장
      • 교착상태가 발생하지 않는다
      • 연쇄복기(Cascading Rollback)를 초래할 수 있음
    • 난관적 병행제어(Optimistic Concurrency Control)
      • 트랜잭션 수행 동안 검사를 하지 않고, 종료 시 일괄적으로 검사
      • 트랜잭션 종료 시 직렬화가 검증되면 DB로 반영한다.
    • 다중 버전 병행제어(Multi-version, Cooncurrency Control)
      • 여러 버전의 타임스탬프를 비교하여 직렬 가능성이 보장되는 타임스탬프를 선택한다.
      • 충돌이 발생할 경우 복귀 수행, 연쇄 복귀 발생 가능성

    회복(Database Recovery)

    1) 회복의 개념

    • 장애로 인해 손상된 데이터베이스를 이전의 정상 상태로 복구하는 작업이다.

     

    2) 장애의 유형

    유형 설명
    트랜잭션 장애 실행  중 발생하는 논리적 오류
    시스템 장애 하드웨어 시스템에서 발생하는 오류
    미디어 장애 디스크 손상 등으로 발생하는 오류

     

    3) Undo와 Redo

    Undo 트랜잭션 로그를 이용해 오류와 관련딘 모든 변경을 취소하여 복구
    Redo 트랜잭션 로그를 이용해 오류 발샌 트랜잭션을 재실행하여 복구

     

    4) 로그 파일

    • 트랜잭션의 데이터 변경사항을 데이터베이스에 기록하기 전에 먼저 기록하는 별도의 파일
    • 이를 이용하여 트랜잭션의 시작과 종료 여부에 따라 REDO 또는 UNDO 수행

     

    5) 회복 기법

    • 로그 기반 회복 기법
      1. 지연 갱신 회복 기법(Deferred Update)
        • 트랜잭션이 커밋되기 전까지 변경 내용을 로그 파일에만 저장
        • 중간에 장애가 생기더라도 데이터베이스에 기록되지 않았으므로 UNDO가 필요없음(미실행 된 로그 폐기)
      2. 즉시 갱신 회복 기법(Immediate Update)
        • 트랜잭션 수행 중 변경 내용을 데이터베이스에 즉시기록
        • 커밋 발생 이전의 갱신은 원자성이 보장되지 않는 미완료 갱신이므로 장애 발생 시 UNDO 필요
    • 검사점 회복 기법(Checkpoint Recovery)
      • 장애 발생 시 검사점 이전에 처리된 트랜잭션은 회복에서 제외, 이후 처리된 트랜잭션은 회복 작업 수행
    • 그림자 페이징 회복 기법(Shadow Paging Recovery)
      • 트랜잭션 시작 시점에 Current Page Table과 동일한 Shadow Page Table 생성, 성공 시 삭제, 실패 시 Current Page Table로 사용
      • 트랜잭션이 성공적으로 완료될경우 Shadow Page Table 삭제
    • 미디어 회복 기법(Media Recovery)
      • 비휘발성 저장 장치 손사에 대비하여 백업,미러링,RAID등을 통해 별도 저장장치에 덤프
    • ARIES 회복 기법
      • REDO 중 Repeating history, UNDO 중 Logging, 분석단계 REDO 단계, UNDO단계로 구성
      • 주요 3단계
    단계 설명
    분석 단계 붕괴가 발생한 시점에 REDO가 시작되어야 하는 로그의 위치를 결정
    REDO 단계 REDO 시작 위치의 로그로부터 로그가 끝날 때까지 REDO를 수행

    REDO된 로그 레코드의 리스트를 관리하여 불필요한 REDO 연산이 수행되지 않도록 한다.
    UNDO 단계 로그를 역순으로 읽으면서 진행 트랜잭션의 연산을 역순으로 UNCO
Designed by Tistory.