1. 병행제어의 개념
- 병행 제어란 다중 프로그램의 이점을 활용하여 동시에 여러개의 트랜잭션을 병행 수행할 때 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호 작용을 제어하는 기술이다.
- 병행성이란 여러 개의 트랜잭션들이 동시에 인터리빙(Interleaving)하게 실행되는 것을 의미한다.
* 인터리빙(Interleaving) : 트랜잭션들이 번갈아가며 조금씩 자신이 처리해야 할 일을 처리하는 것
2. 병행 제어의 목적
- 데이터베이스의 공류를 최대화한다.
- 시스템의 활용도를 최대화한다.
- 사용자에 대한 응답 시간을 최소화한다.
- 단위 시간당 트랜잭션 처리 건수를 최대화한다.
- 데이터베이스의 일관성을 유지한다.
3. 병생 제어의 필요성
- 병행 제어 없이 트랜잭션들이 데이터베이스에 동시에 접근하도록 허용할 경우 다음과 같은 문제점이 발생한다.
문제점 |
의미 |
갱신분실 (Lost Update) |
2개 이상의 트랜잭션이 같은 데이터를 공유하여 갱신할 때 갱신 결과의 일부가 없어지는 현상 |
모순성 (Inconsistency) |
복수의 사용자가 동시에 같은 데이터를 갱신할 때 데이터베이스내의 데이터들이 상호 일치하지 않아 모순된 결과가 발생하는 현상 |
연쇄 복쉬 (Cascading Rollback) |
병행수행되던 트랜잭션들 중 어느 하나에 문제가 생겨 Rollback되는 경우 다른 트랜잭션들도 함께 Rollback되는 현상 |
4. 잠금(Lock)
- 잠금이란 데이터베이스 관리에서 하나의 트랜잭션에 사용되는 데이터를 다른 트랜잭션이 접근하지 못하게 하는 것
- 트랜잭션들은 어떤 데이터를 접근하기 전에 잠금을 요청하여 잠금을 허락받아야 한다.
- 데이터를 갱신할 때는 반드시 잠금(Lock) -> 실행(Execute) -> 해제(Unlock)의 규칙을 따라야 한다.
- 잠금 단위
- 병행 제어에서 한 번에 잠금할 수 있는 단위로 데이터베이스, 테이블, 레코드, 필드 등이 사용될 수 있다.
- 잠금 단위가 크면 잠금 수가 작아 관리하기 쉽지만 공유성 수전이 낮아지고, 잠금 단위가 작으면 잠금 수가 많아 관리하기 복잡하지만 공유성 수준이 높아진다.
- 교착상태(Dead Lock)
-교착 상태란 어떤 한 트랜잭션이 사용하기 위해 잠가 놓은 자원을 사용하기 위해 기다리므로 모든 트랜잭션들이 실행을 전혀 진전시키지 못하고 무한정 기다리고 있는 상태
5. 병행 제어 기법의 종류
(1) 2-단계 잠금 규약(Two-Phase Lock Protocol) 기법
- 트랜잭션 스케쥴의 직렬성을 보장하는 대표적인 잠금 기법이다.
- 스케줄의 직렬성을 보장한다는 장점은 있지만 교착 상태를 예방할 수는 없다는 단점이 있다.
(2) 타임 스탬프 순서(Time Stamp Ordering) 기법
- 타임 스탬프란 시스템이 각 트랜잭션을 실행할 때 부여하는 값이다. 예를 들어, 트랜잭션이 시스템으로 들어오면 그 때의 시스템 시간 값이 그 트랜잭션의 타임 스탬프가 된다.
- 트랜잭션들을 인터리빙하게 실행한 결과가 시간 스템프 순서대로 트랜잭션들을 실행하는 직렬 스케줄의 실행 결과와 항상 동일하다는 것을 보장하는 기법이다.
- 교착 상태가 발생하지 않는다.
[참고] 2011 시나공 정보처리기사 실기 문제집
'Dev. 관련자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기 - 데이터베이스] 튜닝 (Tuning) (0) | 2012.10.13 |
---|---|
[정보처리기사 실기 - 데이터베이스] 보안 (Security) (0) | 2012.10.13 |
[정보처리기사 실기 - 데이터베이스] 회복(Recovery) (0) | 2012.10.13 |
[정보처리기사 실기 - 데이터베이스] 트랜잭션(Transaction) (2) | 2012.10.13 |
[정보처리기사 실기 - 데이터베이스] 인덱스(Index) (1) | 2012.10.13 |