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
'CS 개념정리 > 데이터베이스(DB)' 카테고리의 다른 글
[CS] 데이터베이스 이론 정리(4) (0) | 2022.12.26 |
---|---|
[CS] 데이터베이스 이론 정리(3) (0) | 2022.11.28 |
[CS] 데이터베이스 이론 정리(2) (0) | 2022.11.08 |
[CS] 데이터베이스 이론 정리(1) (0) | 2022.11.02 |