본문 바로가기
CS 개념정리/데이터베이스(DB)

[CS] 데이터베이스 이론 정리(5)

by 반오십 코린이 2023. 1. 9.
728x90

Concurrency Control (병행 제어)

  • 여러개의 트랜잭션을 실행할 때 데이터베이스의 Consistency를 지켜야한다. - 일관된 데이터의 view를 보는 것
  • A 트랜잭션은 B 트랜잭션에 영향을 끼치면 안 된다.
  • 트랜잭션을 제어
  • 사용자에 대한 응답 시간 최소화하는 동시에 db 일관성 유지

Concurrency Control (병행 제어)를 하지 않는다면

  • Lost Update

       - 같은 데이터를 공유하여 갱신할 때 갱신 결과의 일부가 사라지는 현상.

  • Inconsistency 

       - 동시에 같은 데이터를 갱신할 때, 데이터의 상호 불일치가 발생하는 현상.

  • Cacading Rollback

       - 같은 자원을 사용하는 A 트랜잭션은 성공하고 B 트랜잭션이 실패한 경우 B가 실패했기에 2개의 트랜잭션이 롤백되는 경우

  • uncommited Dependency

       - 하나의 트랜잭션 수행 실패한 후 회복하기 전에 다른 트랜잭션이 실패한 갱신 결과 참조하는 현상

Concurrency Control (병행 제어 기법)

  • Locking

트랜잭션이 어떤 데이터에 접근하고자 할때 locking 수행. 

locking을 수행한 트랜잭션만이 locking 해제 가능.

locking 되어있는 데이터에 다른 트랜잭션이 접근 불가.

단위: Filed, Record, File, DataBase

 

- Locking 단위 크면: 관리 용이 but 동시성 수준 ↓

- Locking 단위 작으면: 동시성 수준 높아지나 관리 까다로움(오버헤드 증가)

 

  • Two-Phase Locking Protocol

Serializability(직렬성) 보장

하지만 DeadLock(교착상태) 가능 - lock해놓고 unlock 단계에서 안하고 멍때리면 데드락 걸림

 

Growing 단계: 트랜잭션이 Lock만 할 수 있고 Unlock 불가능

shrinking 단계: 트랜잭션이 Unlock만 할 수 있고 Lock은 불가능

 

  • Time Stamp

시스템에 도착한 순서대로 타임 스탬프 부여 -> 순서대로 실행

데이터에 접근하는 시간을 정해두는 것 -> lock 걸 필요 없음

특정 데이터 접근 시간이 있기 때문에 deadlock x

 

 

 

728x90