본문 바로가기

ORACLE11g/DATABASE 이론

[16장] 병행 제어 (Concurrency Control)

1. 병행 제어(Concurrency Control)의 개념


・동시에 여러개의 트랜잭션을 병행 수행할 때, 트랜잭션들이 DB의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것.

・병행성 : 트랜잭션을 동시에 인터리빙(Interleaving)하게 실행되는 것.

・인터리빙 : 트랜잭션이 번갈아가며 조금씩 처리를 수행하는 것.



2. 병행 제어의 목적


・DB의 공유도 최대화.

시스템 활용도 최대화.

응답 시간 최소화.

단위 시간당 트랜잭션 처리 건수 최대화.

・DB의 일관성 유지



3. 병행 제어의 필요성


・트랜잭션이 병행제어 없이 DB에 동시에 접근할 경우, 다음과 같은 문제점이 발생함.

문제점

의미 

갱신 분실

(Lost Update) 

・같은 데이터를 공유하여 갱신할 때 갱신 결과의 일부가 사라지는 현상.

모순성

(Inconsistency) 

・동시에 같은 데이터를 갱신할 때, 데이터의 상호 불일치가 발생하는 현상.

・불일치 분석(Inconsistent Analysis)이라고도 한다.

연쇄 복귀

(Cascading Rollback)

・트랜잭션 중 하나에 문제가 생겨 Rollback 되는 경우, 다른 트랜잭션들도 함께 Rollback 되는 현상.



4. 잠금(Lock)


・하나의 트랜잭션이 사용중인 데이터를 다른 트랜잭션이 접근하지 못하게 하는 것.

・데이터를 갱신할 때 순서, 잠금(Lock) → 실행(Execute) → 해제(Unlock)

잠금 단위↑, 공유성 ↓, 관리 단순.

・교착 상태(Dead Lock)

데이터를 사용중인 트랜잭션이 잠가놓은 자원을 사용하기 위해 다른 트랜잭션들이 무한정 대기하는 현상.


※ 접근성 허용 행렬

 

공유 잠금

배타 잠금

공유 잠금

접근 허용

대기

배타 잠금

대기

대기


공유 잠금(Shared-Lock) : 잠금 걸린 데이터에 대해 읽기 가능, 기록 불가능.

배타 잠금(Exclusive-Lock) : 잠금 걸린 데이터에 대해 읽기, 기록 모두 불가능.



5. 병행 제어 기법의 종류


§ 2-단계 잠금 규약(Two-Phase Lock Protocol) 기법


・트랜잭션 스케쥴의 직렬성을 보장하는 대표적인 기법

・2단계는 다음과 같다.

확장(Growing) 단계 : 잠금만 수행할 수 있음. (해제 불가)

축소(Shrinking) 단계 : 해제만 수행할 수 있음. (잠금 불가)

장점 : 직렬성 보장 / 단점 : 교착 상태 예방 불가능


§ 타임 스탬프(Time Stamp Ordering) 기법


시스템에 도착한 순서대로 타임 스탬프를 부여하여, 순서대로 실행하도록 한다.

교착 상태가 발생하지 않는다.




'ORACLE11g > DATABASE 이론' 카테고리의 다른 글

[18장] 튜닝 (Tuning)  (0) 2016.10.05
[17장] 보안 (Security)  (0) 2016.10.05
[15장] 회복 (Recovery)  (0) 2016.10.04
[14장] 정규화 (Normalization)  (0) 2016.10.04
[13장] 함수적 종속  (0) 2016.10.04