목록

2019년 2월 18일 월요일

[데이터베이스] 14. 트랜잭션의 병헹 제어(Concurrency Control)와 DB 회복(Recovery)







1. 병행 제어(Concurrency Control)


1-1. 병행 제어란?
  • 동시에 여러 개의 트랜잭션을 병행 수행시킬 때, 데이터베이스의 일관성이 파괴되지 않도록, 트랜잭션의 독립성을 유지할 수 있도록 트랜잭션 간의 상호작용을 제어하는 것이다.



1-2. 병행 수행의 문제점
  • 갱신 분실(Lost Update) : 2개 이상의 트랜잭션이 같은 자료를 공유하여 갱신할 때 갱신 결과의 일부가 없어지는 현상.
  • 비완료 의존성(Uncommitted Dependency) : 하나의 트랜잭션 수행이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상.
  • 모순성(Inconsistency) : 두 개의 트랜잭션이 병행 수행될 때 원치 않는 자료를 이용함으로써 발생하는 문제.
  • 연쇄 복귀(Cascading Rollback) : 병행 수행되던 트랜잭션들 중 어느 하나에 문제가 생겨 롤백하는 경우 다른 트랜잭션도 함께 롤백되는 현상.



1-3. 병행 제어의 목적
  • 데이터베이스의 공유를 최대화한다.
  • 시스템의 활용도를 최대화한다.
  • 데이터베이스의 일관성을 유지한다.
  • 사용자에 대한 응답 시간을 최소화한다.



1-4. 로킹(Locking)
  • 트랜잭션이 사용하는 DB내의 데이터를 다른 트랜잭션이 접근하지 못하게 Lock을 설정해 접근을 제어, 상호 배제하는 것이다.
  • 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 Lock을 요청해서 Lock이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법이다.



1-5. 로킹 단위(Locking Granularity)
  • 병행 제어에서 한꺼번에 로킹할 수 있는 데이터 단위이다.
  • 데이터베이스, 파일, 레코드, 필드 등은 로킹 단위가 될 수 있다.
  • 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만 병행성 수준이 낮아지고, 로킹 단위가 작으면 로크 수가 많아 관리하기 복잡하지만 병행성 수준이 높아진다.




2. 회복(Recovery)


1-1. 회복이란?
  • 회복은 트랜잭션들의 처리를 수행하는 도중 장애가 발생하여 데이터베이스가 손상되었을 때 손상되기 이전의 정상 상태로 복구시키는 작업이다.



1-2. 장애의 유형
  • 트랜잭션 장애 : 입력 데이터 오류, 불명확한 데이터, 시스템 자원 요구의 과다 등 트랜잭션 내부의 비정상적인 상황으로 인하여 프로그램 실행이 중지되는 현상이다.
  • 시스템 장애 : 데이터베이스에 손상을 입히지는 않으나 하드웨어 오동작, 소프트웨어의 손상, 교착 상태 등에 의해 모든 트랜잭션의 연속적인 수행에 장애를 주는 현상이다.
  • 미디어 장애 : 저장장치인 디스크 블록의 손상이나 디스크 헤드의 충돌 등에 의해 데이터베이스의 일부 또는 전부가 물리적으로 손상된 상태이다.



1-3. 회복 관리기(Recovery Management)
  • DBMS의 구성 요소이다.
  • 트랜잭션 실행이 성고적으로 완료되지 못하면 트랜잭션이 데이터베이승 ㅔ만들었던 모든 변화를 취소(Undo) 시키고 트랜잭션 수행 이전의 원래 상태로 복구하는 역할을 한다.
  • 메모리 덤프, 로그를 이용하여 수행한다.



1-4. 회복 기법의 종류
  • 연기 갱신 기법(Deferred Update)
  • 즉각 갱신 기법(Immediate Update)
  • 그림자 페이지 대체 기법(Shadow Paging)
  • 검사점 기법(Check Point)





댓글 없음:

댓글 쓰기