회복과 병행제어-2

ideafy·2023년 11월 28일

CS

목록 보기
7/17
post-thumbnail

DB 회복 기법

  • 로그 회복 기법
    • 즉시 갱신 회복 기법
    • 지연 갱신 회복 기법
  • 검사 시점 회복 기법
  • 미디어 회복 기법(덤프 이용)

즉시 갱신 회복 기법

장애 발생 시점에 따라 redo나 undo를 실행한다.

  • redo -> commit 전
  • undo -> commit 후

지연 갱신 회복 기법

트랜잭션이 부분 완료되면 로그에 기록도니 내용을 DB에 한 번에 반영한다.

redo만 사용한다.

undo는 사용하지 않는 이유??
->장애 발생 시 로그 기록만 버리면 DB가 원래 상태를 유지할 수 있기 때문에

검사 시점 회복 기법

일정 검사 시점이 되면 로그 레코드를 로그 파일에 기록하고 검사 시점(check point)을 만든다.

장애 발생 시 가장 최근 검사 시점 이후의 트랜잭션만 회복 작업 수행하면 되기 때문에 시간 단축의 장점이 있다.

미디어 회복 기법

일정 주기마다 DB 전체 내용을 다른 저장 장치에 저장한다.

만약에 디스크 장애가 발생한다면??
가장 최근의 덤프로 DB를 복구하고 필요에 따라 redo를 수행한다.

병행 수행

여러 사용자가 데이터 베이스르 동시에 공유할 수 있도록 여러 개의 트랜잭션을 동시에 수행하는 것

병행 수행의 문제점

  • 갱신 분실: 연산 결과가 덮어써져서 변경 연산이 무효화 되는 현상
  • 모순성: 변경 연산 실행 시 일관성 없는 상태의 DB에서 데이터를 가져와 연산해서 발생하는 현상
  • 연쇄 복귀: 다른 트랜잭션에서 rollback되면 그 트랜잭션도 rollback해야 되는데 이미 완료돼서 할 수 없는 상태

트랜잭션 스케줄

  • 직렬 스케줄: 각 트랜잭션을 독립적으로 수행
    • 특징: 정확한 결과, 병렬 수행이 아님
      ex) 한 트랜잭션에서 할 일을 한 블럭에서 다 끝냄
  • 비직렬 스케줄
    • 특징: 무결성 제약 조건 보장을 하지 못함. 병행 수행의 갱신 분실, 모순성, 연쇄복귀의 문제점이 있기 때문
  • 직렬 가능 스케줄
    • 특징: 병행 수행하면서 정확한 결과를 얻을 수 있음. read와 write를 한 블럭에 써야함.

병행 제어 기법

  • 로킹 기법(가장 대표적)
    한 트랙잭션이 먼저 접근한 데이터에 대한 독점권을 가진다.
    lock 연산
    unlock 연산

    • 기본 로킹 규약
      • read-write 이전에 lock 연산을 수행한다.
      • lock 연산은 중복 수행이 불가능하다.
      • 독점은 필수적으로 반납해야한다.
  • 로킹 단위와 병행성,제어 난이도는 반비례 관계이다.

    • 로킹 단위가 크면 병행성과 제어 난이도가 낮아진다.
    • 로킹 단위가 작으면 병행성과 제어 난이도가 높아진다.

공용 lock - read only
전용 lock - read, write

전용 lock 실행 시 lock 연산은 양립할 수 없다.

  • 2단계 로킹 규약
    첫번째 unlock 연산 전 모든 lock 연산이 수행되어야 한다.
    • 확장 단계: lock 연산만 수행 가능
    • 축소 단계: unlock 연산만 수행 가능
  • 교착 상태
    트랜잭션이 독점권 데이터의 unlock만을 기다리며 수행을 중단한 상태
profile
재밌게 공부하고 싶어요

0개의 댓글