1. 정의
- Concurrency Control
- 다중 사용자 환경을 지원하는 데이터베이스 시스템에서 여러 트랜잭션들이 성공적으로 동시에 실행될 수 있도록 직렬성을 지원하는 기능
- 목적 ) 데이터 무결성, 일관성 보장
- 트랜잭션 특징 ) ACID(원일고영)
- Atomicity(원자성) : All or Nothing
- Consistency(일관성) : 모순 없는 상태
- Isolation(고립성) : Locking
- Durability(영속성) : Storeing
2. DB 병행제어 개념도 및 기법 종류
가. 개념도
나. 기법종류 - 락투타엠낙
- Locking : 두개의 트랜잭션이 Data에 동시에 접근할 때 발생하는 교착상태를 공유락과 전용락을 통해 무결성을 보장하는 Lock 기법
- 공유 Lock : 공유 잠금한 트랜잭션은 데이터 항목에 대해 읽기(read)만 가능
- 전용 Lock : 전용 잠금한 트랜잭션은 데이터 항목에 대해서 읽기(read)와 기록(write)가 모두 가능
- 2PL(2Phase Locking) : 병행 트랜잭션 Lock, Unlock 시점으로 인한 무결성, 동시성 제어을 위해, 확장과 수축단계로 Locking 을 지원하는 기법
- 확장단계 : 트랜잭션은 lock 만 수행할 수 있고 unlock은 수행할 수 없는 단계
- 수축단계 : 트랜잭션은 unlock만 수행할 수 있고 lock은 수행할 수 없는 단계
- 임밀한(Strict) 2PL : 로킹 2단계는 동일 모든 독점 로그(lock-X)는 그 트랜잭션이이 완료할 때까지 unlock 하지 않고, 그대로 유지, 연쇄 복귀 문제가 발생하지 않음
- 엄격(Rigorous) 2PL : Strict 2PL보다도 더 제한적. 모든 락(Lock-S, Lock-X)는 그 트랜잭션이 완료할 때 까지 unlock되지 않고 Lock된 상태로 유지해야만 함, 모두 직렬화 됨
- TimeStamp Ordering : 트랜잭션을 식별 위해 타임스템프 기준으로 트랜잭션의 실행 순서를 미리 지정하여, 트랜잭션 직렬화를 통한 동시성 제어 기법
- 다중버전 동시성제어(MVCC) : 트랜잭션이 한 데이터 아이템에 접근 시, 그 트랜잭션의 타임스템프와 접근하려는 데이터 아이템 여러 버전의 타임스탬프를 비교하여, 현재 실행 스케쥴 직렬가능성 보장되는 적절한 버전을 선택기법, UNDO 이용 동시성 제어
- 낙관적 검증 : 트랜잭션 실행 시 지역 사본에 갱신 내용 반영 후, 트랜잭션 종료 시 일괄적인 확인(일괄검사)을 통해 직렬화 수행 기법
3. 병행제어를 안했을 때의 문제점 - 갱현모연
- 갱신내용손실(Lost Update) : 트랜잭션들이 동일 데이터를 동시에 갱신할 경우, 동일 갱신 값을 덮어쓰는 문제 발생
- 현황파악오류(Dirty Read) : 트랜잭션의 중간 수행결과를 다른 트랜잭션이 참조함으로써 발생하는 오류
- 모순성(Inconsistency) : 두 트랜잭션이 동시에 실행할 때 데이터베이스가 일관성이 없는 모순된 상태로 남는 문제
- 연쇄복귀 불가(Cascading Rollback) : 트랜잭션들이 동시에 같은 레코드에 접근하여 갱신하는 도중에 다른 트랜잭션이 처리한 부분에 대해서는 복귀 불가