1. 동시성 제어를 위한 Locking 기법

가. Locking 기법의 정의

 - 트랜잭션이 사용하는 자원 (데이터 항목) 에 대하여 상호 배제 (Mutual Exclusive) 기능을 제공하는 기법

 - 상호 배제는 특정 트랜잭션이 데이터 항목에 대하여 잠금 (Lock) 을 설정하면, 잠금을 설정한 트랜잭션이 해제 (Unlock) 할 때까지 데이터를 독점적으로 사용할 수 있는 것

 

나. Locking 연산의 종류(일반적인 DBMS 모두 지원, Select/Update, Insert 등)

 - 공유 Lock (Shared Lock) : 공유 잠금한 트랜잭션은 데이터 항목에 대해 읽기(read)만 가능

 - 전용 Lock (Exclusive Lock) : 전용 잠금한 트랜잭션은 데이터 항목에 대해서 읽기(read)와 기록(write)가 모두 가능


2. 직렬성 보장을 통해 동시성을 제어하는 2Phase Locking 기법

가. 2Phase Locking의 개념도

 - 모든 트랜잭션들이 lock과 unlock연산을 확장Phase와 수축Phase로 구분하여 수행함 
 - 확장Phase : 트랜잭션은 lock 만 수행할 수 있고 unlock은 수행할 수 없는 Phase
 - 수축Phase : 트랜잭션은 unlock만 수행할 수 있고 lock은 수행할 수 없는 Phase

 

나. 2Phase Locking 기법의 문제 및 해결

 - 2Phase Locking 기법이 deadlock의 완전한 제거를 나타내지는 못함
 - 2Phase Locking 기법 상태에서 Cascading rollback이 가능함
 - 교착상태 예방과 교착상태 탐지로 해결

 

다. 기본적인 2Phase Locking의 문제점을 피하기 위한 Locking 기법

종류 내용 특징
Strict 2PLP - 2Phase Locking
- 모든 독점 lock(Lock-X)는 해당 트렌젝션이 완료될 때까지 unlock 하지 않음.  그대로 유지
- 연쇄복귀(Cascacding rollback) 문제 발생하지 않음
- Deadlock 회피 못함
Rigorous 2PLP - 2Phase Locking
- 모든 lock는 해당 트랜젝션 이 완료될
때까지 unlock 하지 않음.
- Strict 2PLP보다 더 제한적
- Deadlock 회피 못함
Static (Conservative) 2PL - Transaction 수행 전부터 해당 트렌젝션의 읽기 집합과 쓰기집합을 미리 선언하여 해당 트렌젝션이 접근하려는 모든 항목들에 Lock을 획득 - Dead lock 발생 하지 않음.
- 현실성 없음

 

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,