회복/병행제어

초보개발·2021년 11월 11일
0

Database

목록 보기
4/10

회복(Recovery)

트랜잭션들을 수행하는도중 장애가 발생해 데이터베이스가 손상되었을 경우, 손상되기 이전의 상태로 복구하는 작업

1. 연기 갱신 기법

트랜잭션이 성공적으로 완료 될 때까지 데이터베이스에 대한 갱신을 연기하는 방법
트랜잭션 수행할 동안 갱신된 내용은 Log에 보관하고 트랜잭션 부분 완료 시점에 Log에 보관한 내용을 데이터베이스에 기록함

  • Redo 작업만 가능

2. 즉각 갱신 기법

트랜잭션이 데이터를 갱신하면 트랜잭션이 부분 완료되기 전이라도 즉시 실제 데이터베이스에 반영하는 방법
장애가 발생해 회복 작업을 할 경우를 대비해 갱신된 내용을 Log에 보관함

  • Redo, Undo 가능

3. 그림자 페이지 대체 기법

갱신 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성해 각 페이지마다 복사본인 그림자 페이지를 별도 보관해 두고, 실제 패이지 대상으로 갱신작업을 하다가 장애가 발생했을 때, 트랜잭션 작업을 롤백시킬 때에는 갱신 이후의 실제 페이지 부분을 그림자 페이지로 대체해 회복시키는 방법

4. 검사점 기법

트랜잭션 실행 중 특정 단계에서 재실행할 수 있도록 갱신 내용이나 시스템 상황 등에 관한 정보와 함께 검사점을 Log에 보관하고 장애 발생시 트랜잭션 전체를 철회하지 않고 검사점부터 회복작업을 수행해 회복시간을 절약하도록하는 기법

병행 제어(Concurrency Control)

동시에 여러 개의 트랜잭션을 병행 수행했을 때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 어기지 않도록 트랜잭션 간의 상호 작용을 제어하는 것

  • 일관성이 어긋나면 갱신 분실, 비완료 의존성, 모순성, 연쇄 복귀 등 문제 발생

1. 로킹(Locking)

트랜잭션이 어떤 로킹 단위를 접근하기 전, 잠금을 요청해서 잠금이 허락되어야만 그 로킹 단위를 접근할 수 있도록 하는 기법

  • 데이터의 접근을 상호 배타적으로함

2. 타임 스탬프 순서

트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행하기 전, 타임 스탬프를 부여해 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법

3. 최적 병행 수행

병행수행하고자 하는 트랜잭션이 Read Only 트랜잭션일 경우, 트랜잭션 간 충돌이 매우 낮기 때문에 병행제어 기법을 사용하지 않아도 대다수의 트랜잭션은 시스템의 상태를 인관성 있게 유지한다는 점을 이용한 기법

4. 다중 버전 기법

타임 스탬프의 개념을 이용한 기법으로 갱신될 때마다 버전을 부여하여 관리한다는 특징이 있음

로킹 단위

병행제어에서 한꺼번에 로킹할 수 있는 객체의 크기를 의미한다.

  • 큰 로킹 단위 : 관리가 용이하지만 병행성 수준이 낮아짐
  • 작은 로킹 단위 : 병행성 수준이 높아지지만 로크 수가 많아 관리하기 복잡해 오버헤드가 증가함

0개의 댓글