병행제어
병행제어는 여러 트랜잭션이 동시에 실행될 때 데이터 일관성과 고립성을 지키는 메커니즘이다. 핵심은 동시 실행 결과가 어떤 직렬 실행 순서의 결과와 같아지도록 만드는 것이다. 병행제어가 없으면 갱신 분실, 모순성, 연쇄 복귀, 비완료 의존성이 생긴다. 2단계 잠금 프로…
주요 장면
대본
정의
병행제어는 여러 트랜잭션이 동시에 실행될 때 데이터 일관성과 고립성을 지키는 메커니즘이다.
핵심은 동시 실행 결과가 어떤 직렬 실행 순서의 결과와 같아지도록 만드는 것이다.
병행제어가 없으면 갱신 분실, 모순성, 연쇄 복귀, 비완료 의존성이 생긴다.
2단계 잠금 구조
2단계 잠금 프로토콜은 확장 단계와 축소 단계로 잠금을 다룬다.
확장 단계에서는 읽기 전 S 잠금, 쓰기 전 X 잠금을 얻기만 하고 해제하지 않는다.
트랜잭션이 처음 잠금을 해제하면 축소 단계로 들어가며, 이후 새 잠금은 얻을 수 없다.
잠금의 획득과 해제 순서를 나눠서 직렬성을 보장한다.
갱신 분실 예제
가상의 예로 계좌 A의 잔액은 100만원이다. T1은 10만원을 입금하고 T2는 20만원을 출금한다.
병행제어가 없으면 두 트랜잭션이 같은 잔액을 읽어 한쪽 갱신이 사라지는 갱신 분실이 생긴다.
2단계 잠금을 적용하면 T1이 배타 잠금을 얻고 갱신한 뒤 해제할 때까지 T2는 대기한다.
결과 잔액은 100만원에 입금을 더하고 출금을 뺀 90만원이다.
기법 비교와 교착
두 기법은 같은 목표를 서로 다른 방식으로 달성한다. 표로 비교해 보자.
2단계 잠금은 교착이 발생할 수 있어 탐지와 회복이 함께 필요하다.
타임스탬프 순서는 교착이 없지만 순서 위반 시 취소가 잦아질 수 있다.
교착을 답할 때는 대기 그래프 탐지, 타임아웃, 희생자 선택 중 하나를 함께 쓴다.
정리
병행제어는 동시 트랜잭션의 고립성과 직렬 가능성을 보장하는 메커니즘이다.
기법은 잠금 기반, 타임스탬프 순서, 낙관적 병행 제어, 다중 버전 방식으로 나뉜다.
시험에서는 정의, 기법 종류, 문제점과 해결을 묶어서 답한다.