정보처리기사 준비/DB 파트 정리

[DB] 회복 기법, 병행 제어 기법, 로킹 단위

류도토리 2024. 4. 3. 12:33

1. 회복 기법

 - 취소(Undo) : 로그에 보관한 정보를 이용하여 가장 최근에 변경된 내용부터 거슬러 올라가면서 트랜잭션 작업을 취소하여 원래의 데이터베이스로 복구

 - 재시도(Redo) : 덤프와 로그를 이용하여 가장 최근의 정상적인 데이터베이스로 회복시킨 후 트랜잭션을 재실행 시킴

 

연기 갱신 기법
(Deferred Update)
- 트랜잭션이 성공적으로 완료될 때까지 데이터베이스에 대한 실질적인 갱신을 연기하는 기법
- 트랜잭션이 수행되는 동안 갱신된 내용은 일단 로그에 보관
- 트랜잭션의 부분 완료 시점에 로그에 보관한 갱신 내용을 실제 데이터베이스에 기록
- 트랜잭션이 부분 오나료되기 전에 장애가 발생하여 트랜잭션이 Rollback되면 트랜잭션이 실제 데이터베이스에 영향을 미치지 않았기 떄문에 어떠한 갱신 내용도 취소(Undo) 시킬필요 없음
- Redo 작업만 가능
즉각 갱신 기법
(Immediate Update)
- 트랜잭션이 데이터를 갱신하면 트랜잭션이 부분 완료 되기 전이라도 즉시 데이터베이스에 반영
- 장애가 발생할 경우를 대비하여 갱신 내용은 로그에 보관
- 회복 작업 시 Redo, Undo 모두 가능
그림자 페이지 대체 기법
(Shadow Paging)
- 갱신 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성하여 각 페이지마다 복사본인 그림자 페이지로 별도 보관해 놓고, 실제 페이지를 대상으로 트랜잭션에 의한 갱신 작업을 하다가 장애가 발생하여 트랜잭션 작업을 Rollback시킬 때 갱신된 이후의 실제 페이지 부분에 그림자 페이지를 대체하여 회복시키는 기법
- 로그, Undo, Redo알고리즘이 필요 없다.
검사점 기법
(Check Point)
- 트랜잭션 실행 중 특정 단계에서 재실행할 수 있도록 갱신 내용이나 시스템에 대한 상환 등에 관한 정보와 함 께 검사점을 로그에 보관해 두고, 장애 발생 시 트랜잭션 전체를 절회하지 않고 검사점부터 회복 작업을 하여 회복시간을 절약하도록 하는 기법

 

2. 병행 제어 기법

- 명령어가 여러곳에서 실행 될 경우 데이터베이스의 일관성을 파괴하지 않을 수 있도록 트랜잭션이 일어날 때 상호간 작용을 제어하고 순서를 제어하는 것

- 로킹 : 특정 컬럼에 접근하지 못하도록 잠그는 단위

로킹
(Locking)
- 로킹은 주요 데이터의 액세스를 상호 배타적으로 하는 것이다.
- 트랜잭션들이 어떤 로킹 단위를 액세스 하기 전에 Lock(잠금)을 요청해서 Lock이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법이다.
타임 스탬프 순서
(Time Stamp Ordering)
- 직렬성 순서를 결정하기 위해 트랜잭션 간의 처리 순서를 미리 선택하는 기법들 중에서 가장 보편적인 방법이다.
- 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 시간표(Time Stamp)를 부여하여 부여된 시간에 따라 작업을 수행하는 기법이다.
- 교착상태가 발생하지 않는다.
최적 병행 수행
(검증 기법, 확인 기법, 낙관적 기법)
- 병행수행하고자 하는 대부분의 트랜잭션이 판독 전용(Read Only) 트랜잭션일 경우, 트랜잭션 간의 충돌률이 매우 낮아서 병행제어 기법을 사용하지 않고 실행되어도 이 중의 많은 트랜잭션은 시스템의 상태를 일관성 있게 유지한다는 점을 이용한 기법이다.
다중 버전 기법 - 타임 스탬프의 개념을 이용하는 기법으로, 다중 버전 타임 스탬프 기법이라고도 한다.
- 타임 스탬프 기법은 트랜잭션 및 데이터들이 이용될 때의 시간을 시간표로 관리하지만, 다중 버전 기법은 갱신될 때마다의 버전을 부여하여 관리한다.

 

3. 로킹 단위

- 로킹 : 특정 컬럼에 접근하지 못하도록 잠그는 단위

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

- 데이터베이스, 파일, 레코드, 필드 등이 로킹 단위가 될 수 있음

- 로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만 병행성 수준이 낮아지고, 로킹 단위가 작으면 로크 수가 많아 관리하기 복잡해 오버헤드가 증가하지만 병행성 수준이 높아짐

- 병행성 수준 : 병행성 수준이 낮아진다는 것은 데이터베이스 공유도가 감소함 / 높다는 것은 데이터베이스 공유도가 증가한다는 의미