문제5) 데이터베이스의 병행제어(Concurrency Control)에 대하여 다음을 설명하시오.
가. 병행제어의 정의
나. 병행제어의 기법의 종류
다. 병행제어의 문제점
답)
1. 데이터베이스의 일관성 확보, 병행제어의 개념
|
정의
|
- 다중 사용자 환경을 지원하는 데이터베이스 시스템에서 여러 트랜잭션들이 성공적으로 동시에 실행될 수 있도록 지원하는 기능
|
목적
|
- 데이터베이스의 무결성 및 일관성 보장
- 트랜잭션 직렬화를 통한 처리량 극대화
- 병렬 처리로 사용자 응답시간 최소화
|
단계
|
개념도
|
설명
|
Locking
|
|
- 특정 트랜잭션이 데이터 항목에 대하여 잠금(Lock)을 설정하면, 잠금을 설정한 트랜잭션이 해제(Unlock)할 때까지 데이터를 독점적으로 사용할 수 있는 것 (Shared Lock, Exclusive Lock 구성)
|
2PL(2단계 Locking)
|
|
- 모든 트랜잭션들이 Lock과 Unlock 연산을 확장단계와 수축 단계로 구분하여, 상호배제 원리를 이용한 트랜잭션간의 직렬성 보장 기법(read_lock(), write_lock(), unlock() 연산으로 구성)
|
Time Stamp (타임스탬프)
|
|
- 동시에 트랜잭션을 실행한 결과와 타임스탬프 순서대로 직렬화해서 실행한 결과가 같음을 보장하는 동시성 제어 기법
- DeadLock 회피기법으로 Wait-die, Woundwait 기법 적용
|
Validation (낙관적 검증)
|
|
- 트랜잭션 수행 중 어떠한 검증도 수행하지 않고, 트랜잭션을 종료할 때 검증을 수행하여 데이터베이스에 반영하는 병행제어 기법
|
MVCC (다중버전)
|
|
- 트랜잭션에서 데이터에 접근하는 경우 데이터의 다중버전 상태 중 보장되는 버전에 맞는 CR 복사본을 롤백 세그먼트에서 반환하여 처리하는 병행제어 기법
- SCN 10023 번 시점에 시작된 쿼리가10023 번 이후에 변경된 데이터를 만나면 롤백 세그먼트의 CR 복사본을 참고하여 10023 을 넘지 않는 데이터 중 최신 데이터 Read 수행
|
- 병행제어를 수행하지 않을 경우 갱신부실, 현황파악오류, 모순성, 연쇄복귀 등의 문제점 발생
|
단계
|
개념도
|
설명
|
갱신 손실 (Lost Update)
|
|
- 트랜잭션들이 동일 데이터를 동시에 갱신할 경우 트랜잭션 값이 갱신으로 분실되는 문제
- 트랜잭션 A가 데이터를 갱신한 후, 트랜잭션을 종료하기 전에 나중 트랜잭션 B가 갱신 값을 덮어쓰는 경우 발생
|
현황파악오류 (Dirty Read)
|
|
- 트랜잭션 B 가 같은 데이터를 2번 읽었을때 서로 다른 결과가 나오는 문제
- 읽기 작업을 하는 트랜잭션 B가 쓰기 작업을 하는 트랜잭션 A가 작업한 중간 데이터를 읽어서 발생하는 문제
|
모순성 (Inconsistency)
|
|
- 두 트랜잭션이 동시에 실행할 때 DB 가 일관성이 없는 상태로 남는 문제
- 다수의 트랜잭션이 동시에 DB를 액세스, 갱신을 해서 DB 내 데이터가 일치하지 않거나 출력 정보가 기대 값과 모순되는 경우
|
연쇄복귀 (Cascading Rollback)
|
|
- 두 트랜잭션이 동시에 실행할 때 Commit으로 인하여 롤백이 불가능한 문제
- 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 다른 트랜잭션이 처리한 부분에 대해 취소 불가한 문제
|
- 웹 페이지 등의 조회를 중심으로 처리하는 업무는 바로 실행 가능하고, Timestamp Ordering 방식 추천
- 업무적인 구분이 명확하여 서로 중복이 거의 없다면, Validation 동시성 제어 기법 적용 권장
|
공감과 댓글은 아이티신비에게 큰 힘이 됩니다.
블로그 글이 유용하다면 블로그를 구독해주세요.♥