IT 이야기

[DB] 데이터베이스 병행제어

데이터요리사 2021. 11. 29. 23:53
다중 사용자 환경을 지원하는 데이터베이스 시스템 환경에서 여러 트랜잭션들이 동시에 수행되더라도 데이터의 무결성과 일관성을 보장하며 처리 가능하도록 병행 제어를 수행해야 한다. 다음 각 항목에 대하여 설명하시오.

 

1. 병행 제어의 필요성

  • 다중 사용자 환경을 지원하는 데이터베이스에서 ACID를 보장하기 위해, 여러 트랜잭션들이 동시에 실행될 수 있도록 하는 병행 제어가 필요

- 병행 제어(동시성 제어) 어려운 이유는 동시성(Concurrency)  일관성(Consistency) Trade-off 관계이기 때문
-  동시성을 높이려고 Lock 사용을 최소화 하면 일관성 유지가 어렵고, 일관성을 높이려고 Lock  적극적으로 사용하면 동시성이 저하됨

 

2. 병행 제어를 하지 않는 경우 발생하는 문제점
구분 내용 사례
갱신 손실
(Lost Update)
이전 트랜잭션이 데이터를 갱신한 후 트랜잭션을 종료하기 전에 나중 트랜잭션이 갱신 값을 덮어쓰는 경우 발생 Tx1 Tx2 동시에 갱신을 시도하여 늦게 발생된 Tx2에의해 Tx1 수행이 무효화
현황파악오류(Dirty Read) 트랜잭션의 중간 수행결과를 다른 트랜잭션이 참조함으로써 발생하는 오류 Tx1에서 일어난 트랜잭션 실행이 Tx2에도 영향을 미침.
모순성(Inconsistency) 두 트랙잭션이 동시에 실행할 때 DB가 일관성이 없는 상태로 남는 문제 Tx1 Tx2 동시에 실행되는 과정에서 데이터 값이  상호 연관 없이 변질됨.
연쇄복귀
(Cascading Rollback)
복수의 트랜잭션이 데이터 공유시 특정 트랜잭션이 처리를 취소할 경우 다른 트랜잭션이 처리한 부분에 대해 취소 불가능  Tx1 실행 실패로 인해 롤백되어야 하는데 성공적으로 실행된 Tx2 롤백되는 현상

 

 

3. 병행 제어 기법의 종류
종류 상세설명 특징
Locking 트랜잭션이 사용하는 자원에 대하여 상호 배제(Mutual Exclusive) 기능을 제공 공유 Lock,
배타적 Lock
2PL 모든 트랜잭션들을 Lock과 Unlock 연산을 확장단계와 수축단계로 구분
교착상태, Cascading rollback 문제 발생 가능
Timestamp 트랜잭션을 식별하기 위해 타임 스탬프를 지정하여 트랜잭션간의 순서를 선택
시스템 시계,
논리적 계수기
낙관적 검증 기법 트랜잭션 수행 동안은 어떠한 검사도 하지 않고, 트랜잭션 종료 시 일괄적으로
직렬성 위반을 검사

Read, Validation, Write
  •   동시에 실행되는 트랜잭션 수를 최대화 하고 입력, 수정, 삭제, 검색 시 데이터 무결성이 유지되도록 해야 함
728x90