[정보처리기사 실기 - 데이터베이스] 병행 제어 (Concurrency Control) :: 소림사의 홍반장!

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. 관련자격증/정보처리기사 카테고리의 포스트를 톺아봅니다