회복 / 병행 제어
카테고리: info-process
회복 / 병행 제어
회복(Recovery)
- 회복은 트랜잭션들을 수행하는 도중 장애가 발생하여 데이터베이스가 손상 되었을 때 손상되기 이전의 정상 상태로 복구하는 작업이다.
- 회복 기법의 종류
- 연기 갱신 기법 :
- 트랜잭션이 성공적으로 완료될 때 까지 데이터베이스에 대한 실질적인 갱신을 연기하는 방법
- 트랜잭션이 수행되는 동안 갱신된 내용은 일단 Log에 보관된다.
- 트랜잭션의 부분 완료 시점에 Log에 보관한 갱신 내용을 실제 데이터베이스에 기록한다.
- Redo 작업만 가능하다.
- 즉각 갱신 기법 :
- 트랜잭션이 데이터를 갱신하면 트랜잭션이 부분 완료되기 전이라도 즉시 실제 데이터베이스에 반영하는 방법
- 장애가 발생하여 회복 작업할 경우를 대비하여 갱신된 내용들은 Log에 보관시킨다.
- Redo와 Undo 모두 가능하다.
- 그림자 페이지 대체 기법 :
- 갱신 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성하여 각 페이지마다 복사본인 그림자 페이지를 별도 보관해 놓고, 실제 페이지를 대상으로 갱신 작업을 수행하다가 장애가 발생하여 트랜잭션 작업을 Rollback 시킬 때는 갱신 이후의 실제 페이지 부분을 그림자 페이지로 대체하여 회복 시키는 기법
- 검사점 기법 :
- 트랜잭션 실행 중 특정 단계에서 재실행할 수 있도록 생신 내용이나 시스템에 대한 상황 등에 관한 정보와 함께 검사점을 로그에 보관해 두고, 장애 발생 시 트랜잭션 전체를 철회하지 않고 검사점부터 회복 작업을 수행하여 회복시간을 절약하도록 하는 기법
- 연기 갱신 기법 :
병행제어(Concurrency Control)
- 병행제어란 다중 프로그램의 이점을 활용하여 동시에 여러 개의 트랜잭션을 병행수행할 때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것이다.
- 병행제어 없이 트랜잭션들이 데이터베이스에 동시에 접근하도록 허용할 경우 갱신분실, 비완료 의존성, 모순성, 연쇄 복귀 등의 문제가 발생한다.
- 병행제어 기법의 종류
- 로킹 :
- 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 Lock(잠금)을 요청해서 Lock이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법
- 주요 데이터의 액세스를 상호 배타적으로 한다.
- 타임 스탬프 순서 :
- 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 시간표(Time Stamp)를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법
- 직렬성 순서를 결정하기 위해 트랜잭션 간의 처리 순서를 미리 선택하는 기법들 중에서 가장 보편적인 방법이다.
- 최적 병행수행 (검증 기법, 확인 기법, 낙관적 기법) :
- 병행수행하고자 하는 대부분의 트랜잭션이 판독 전용(Read Only) 트랜잭션일 경우, 트랜잭션 간의 충돌률이 매우 낮아서 병행제어 기법을 사용하지 않고 실행되어도 이 중의 많은 트랜잭션은 시스템의 상태를 일관성 있게 유지한다는 점을 이용한 기법
- 다중 버전 기법
- 타임 스탬프의 개념을 이용하는 기법
- 다중 버전 타임 스탬프 기법이라고도 한다.
- 타임 스태프 기법은 트랜잭션 및 데이터들이 이용될 때의 시간을 시간표로 관리하지만, 다중 버전 기법은 갱신될 때마다의 버전을 부여하여 관리한다.
- 로킹 :
로킹 단위 (Locking Granularity)
- 로킹 단위는 병행제어에서 한꺼번에 로킹할 수 있는 객체의 크기를 의미한다.
- 데이터베이스, 파일, 레코드, 필드 등이 로킹 단위가 될 수 있다.
- 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만, 병행성 수준이 낮아진다.
- 로킹 단위가 작으면 로크 수가 많아 관리하기 복잡해 오버헤드가 증가하지만 병행성 수준이 높아진다.
댓글 남기기