본문 바로가기

전공/데이터베이스

[데이터베이스] 복구 시스템 - (1)

 

실패 분류(Failure Classification)

 


 

1. 트랜잭션 실패(transaction failure):

트랜잭션 실패를 유발하는 두 가지 원인이 있다.

 

논리적 오류:

잘못된 입력, 데이터 부재, 오버플로, 자원의 한계 초과 등 internal error로 인해 트랜잭션이 완료할 수 없는 상태를 의미한다.

 

시스템 오류:

deadlock과 같은 error condition에 의해 데이터베이스 시스템이 트랜잭션을 종료해야 하는 상태를 의미한다.

 

 

2. 시스템 장애(system crash):

파워 고장이나 하드웨어 혹은 소프트웨어 오류로 인해 시스템이 정지되고 휘발성 저장 장치의 내용이 손실되고 트랜잭션 처리가 중단되는 상태를 의미한다.

 

이때, 시스템 장애가 발생해도 비휘발성 저장 장치의 내용은 손상되지 않는다는 가정을 실패 중지 가정(fail-stop assumption)이라 한다.

 

 

3. 디스크 고장(disk failure):

데이터 전송 실패나 헤드 손상이나 고장으로 인해 디스크 저장 장치의 전체나 부분이 고장 난 상태를 의미한다.

 

 

 

 

 

 

데이터 접근(Data Access)


 

트랜잭션은 디스크에서 메인 메모리로 데이터를 입력(input)하고, 다시 그 데이터를 디스크로 출력(output)한다.

 

이때, 디스크와 메인 메모리 사이의 입출력은 블록 단위로 이루어진다.

 

디스크 상의 블록물리적 블록(physical block)이라 하고, 메인 메모리에 임시로 존재하는 블록버퍼 블록(buffer block)이라 한다.

 

 

각 트랜잭션 $T_{i}$는 자신이 접근하고 갱신할 모든 데이터 항목의 사본을 저장할 개인 작업 영역을 가진다.

 

트랜잭션은 다음 두 가지 연산을 통해 시스템 버퍼와 자신의 작업 영역 사이에 데이터를 주고받는다.

 

read(X):

데이터 항목 X의 값을 지역변수 $x_{i}$에 할당한다.

 

write(X):

지역변수 $x_{i}$의 값을 데이터 항목 X에 할당한다.

 

이때, output($B_{x}$)는 write(X)를 실행한 후 즉각적으로 실행할 필요는 없다.