1. 병행제어의 개념

- 다중 프로그램의 이점으 활용하여 동시에 여러 개의 트랜잭션을 병행 수행할 때 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 

  트랜잭션 간의 상호 작용을 제어하는 기술

- 여러 개의 트랜잭션들이 동시에 인터리빙(번갈아가며 조금씩 자신의 일 처리)하게 실행되는 것

 

2. 병행제어의 목적

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

시스템의 활용도 최대화

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

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

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

 

3. 병행제어의 필요성

문제점

의미

갱신 분실

- 갱신 결과의 일부가 없어지는 현상

- 한 트랜잭션이 수행한 결과가 다른 결과에 덮여 DB에 아무런 영향 주지 못하고 분실됨

모순성 (불일치성)

데이터베이스 내의 데이터들이 상호 일치하지 않아 모순된 결과가 발생하는 현상

불일치 분석

각 트랜잭션들이 수행 결과로 기대한 결과가 아닌 다른 결과가 나오는 것

연쇄 복귀

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

한 트랜잭션이 비정상 종료로 ROOLBACK할 시 그 결과를 바탕으로 이루어진 다른 트랜잭션의 수행 결과도 ROLLBACK 되는 것

 

4. 잠금

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

하나의 트랜잭션에 사용되는 데이터를 다른 트랜잭션이 접근하지 못하게 하는 것

- 트랜잭션들은 어떤 데이터를 접근하기 전에 잠금을 요청하여 잠금을 허락받아야 함

- 갱신 시 규칙 : 잠금 -> 실행 -> 해제

1) 잠금 단위

2) 접근성 허용 행렬

공유 잠금 트랜잭션 T1이 데이터 X에 대하여 공유 잠금을 걸면 T2는 X에 대해 읽기만 가능(기록 불가)

배타 잠금 트랜잭션 T1이 데이터 X에 대하여 배타 잠금을 걸면 T2는 X에 대해 읽기 기록 모두 불가

 

3) 교착 상태 (DEAD LOCK)

- 어떤 한 트랜잭션이 사용하기 위해 잠가 놓은 자원을 사용하기 위래 기다리므로 모든 트랜잭션들이 실행을 전혀 진전시키지 못하고 무한정 기다리고 

  있는 상태

- 교착 상태 해결을 위해선 작업 완료 후에는 UNLOCK을 해줘야 함


5. 병행제어 기법의 종류

1) 2-단계 잠금 규약 기법

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

- 모든 트랜잭션들이 잠금과 잠금 해제를 확장 -> 축소 2단계로 수행

  - 확장 단계 : 잠금만 수행 가능 / 잠금 해제는 불가능한 단계

  - 축소 단계 : 잠금 해제만 수행 가능 / 잠금은 불가능한 단계

- 스케줄의 직렬성을 보장한다는 장점은 있지만, 교착 상태 예방은 불가능


* 트랜잭션 스케줄

- 트랜잭션의 연산들이 인터리빙하게 실행되는 것이 허용될 때 트랜잭션들의 개개 연산들이 실행되는 순서

- 직렬 스케줄 : 서로 다른 트랜잭션들의 연산 사이에 인터리빙이 없는 스케줄

- 병행 스케줄 : 서로 다른 트랜잭션들의 연산 사이에 인터리빙이 있는 스케줄

 

2) 타임 스탬프 순서 기법

- 타임 스탬프 : 시스템이 각 트랜잭션을 실행할 때 부여하는 값

   트랜잭션이 시스템안에 들어오면 그 때의 시스템 시간 값

- 트랜잭션들을 인터리빙 실행 결과 = 시간 스탬프 순서대로 트랜잭션 실행하는 직렬 스케줄 실행 결과 항상 동일하다는 것을 보장

- 직렬성 순서를 결정하기 위해 트랜잭션 간의 실행 순서를 미리 결정하는 가장 보편적인 기법

- 읽거나 변경할 데이터에 대해 트랜잭션 실행하기 전에 타임스탬프 부여

    -> 타임 스탬프 순서에 따라 트랜잭션 작업을 수행하도록 함

- 교착 상태 발생하지 않음

+ Recent posts