-->

[정보처리기사] 데이터베이스 병행제어 (문제점/목적/로킹/기법)

데이터베이스 병행제어(Concurrency Control)

병행제어란 다중 프로그램의 이점을 활용해, 동시에 여러 트랜잭션을 병행 수행할 때, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것을 말한다.

 

 

데이터베이스 병행제어 문제점

이러한 병행제어에는 아래와 같은 문제점이 있다.

 

갱신분실 (Lost Update)

- 갱신 결과의 일부가 없어짐

 

비완료 의존성 (Uncommitted Dependency)

하나의 트랜잭션 수행이 실패하고 회복되기 전 다른 트랜잭션이 참조하는 현상

 

모순성 (Inconsistency)

두 트랜잭션이 병행 수행될 때, 원치 않는 자료를 이용함으로써 발생

 

연쇄복귀 (Cascading Rollback)

병행 수행되던 트랜잭션들 중 어느 하나에 문제가 생겨 롤백하는 경우 다른 트랜잭션도 함께 롤백되는 현상

 

 

병행제어 목적

- 데이터베이스의 공유를 최대화

- 시스템 활용도를 최대화

- 데이터베이스의 일관성을 유지

- 사용자에 대한 응답시간을 최소화

 

 

로킹(Locking)이란

- 주요 데이터의 액세스를 상호 배타적으로 하는 것

- 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 Lock을 요청해서 Lock이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법

 

 

로킹단위 (Locking Granularity)

- 병행 제어에서한꺼번에 로킹할 수 있는 데이터 단위

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

- 로킹 단위가 크면 로크수가 작아 관리하기가 쉽지만 병행성 수준이 낮아짐 (=오버헤드가 적지만 공유도 저하)

- 로킹 단위가 작으면 로크수가 많아 관리하기 복잡하지만 병행성 수준이 높아짐 (=오버헤드가 크지만 공유도 증가)

 

 

병행제어 기법의 종류

2단계 잠금 규약

- 트랜잭션 스케줄의 직렬성을 보장하는 대표적인 잠금 기법

- 직렬성은 보장하지만 교착상태를 예방할 수는 없음

 

*교착상태 : 어떤 한 트랜잭션이 사용하기 위해 잠가놓은 자원을 사용하기 위해 기다리므로 모든 트랜잭션들이 실행을 진행하지 못하고 무한정 기다리고 있는 상태

 

타임스탬프 순서 기법

- 트랜잭션이 시스템으로 들어오면 그 때의 시간 값이 트랜잭션의 타임스탬프가 됨

- 교착상태가 발생하지 않음

 

댓글

Designed by JB FACTORY