아래와 같이 트랜잭션 T1, T2, T3가 병행 수행되는 스케줄을 가진… | [경찰간부후보생 데이터베이스론] 23년 1회차 기출문제 상세 페이지
1[경찰간부후보생 데이터베이스론] 23년 1회차
아래와 같이 트랜잭션 T1, T2, T3가 병행 수행되는 스케줄을 가진 경우, 직렬 불가능 스케줄은?
1
| TID 시간 | T1 | T2 | T3 |
| 1 | read(x) | ||
| 2 | write(x) | ||
| 3 | read(y) | ||
| 4 | write(y) | ||
| 5 | read(x) | ||
| 6 | write(x) | ||
| 7 | read(y) | ||
| 8 | write(y) |
2
| TID 시간 | T1 | T2 | T3 |
| 1 | read(x) | ||
| 2 | write(x) | ||
| 3 | read(y) | ||
| 4 | read(x) | ||
| 5 | write(x) | ||
| 6 | write(y) | ||
| 7 | read(y) | ||
| 8 | write(y) |
3
| TID 시간 | T1 | T2 | T3 |
| 1 | read(x) | ||
| 2 | write(x) | ||
| 3 | read(y) | ||
| 4 | read(x) | ||
| 5 | write(y) | ||
| 6 | read(y) | ||
| 7 | write(x) | ||
| 8 | write(y) |
4
| TID 시간 | T1 | T2 | T3 |
| 1 | read(x) | ||
| 2 | read(y) | ||
| 3 | write(y) | ||
| 4 | read(x) | ||
| 5 | write(x) | ||
| 6 | write(x) | ||
| 7 | read(y) | ||
| 8 | write(y) |
해설
T2의 write(x) 뒤에 T1의 write(x)가 오는 스케줄이 직렬 불가능하다.
이 스케줄은 T1의 read(x)와 T2의 write(x)로 T1 → T2, T2의 write(x)와 T1의 write(x)로 T2 → T1의 충돌이 함께 생겨 선행 그래프에 사이클이 만들어진다.
- T3가 y를 처리한 뒤 T2가 x, T1이 y를 처리하는 스케줄: 간선이 T3 → T1, T1 → T2뿐이라 직렬 가능하다.
- T1이 x와 y를 먼저 접근하고 T3가 마지막에 y를 처리하는 스케줄: 간선이 T1 → T2, T1 → T3뿐이라 직렬 가능하다.
- T3의 read(y)와 write(y) 사이에 T2의 read(x)가 끼는 스케줄: 간선이 T3 → T1, T1 → T2뿐이라 직렬 가능하다.
오류나 개정된 내용이 보이면 알려주세요