모두CBT

트랜잭션 T1과 T2가 병행 수행될 때, 정확한 결과를 보장할 수 있는… | [7급 국가직 데이터베이스론] 22년 1회차 기출문제 상세 페이지

1[7급 국가직 데이터베이스론] 22년 1회차
트랜잭션 T1과 T2가 병행 수행될 때, 정확한 결과를 보장할 수 있는 스케줄만을 모두 고르면? (단, 두 트랜잭션 수행 전 A와 B의 값은 각각 50이다)
ㄱ.
T1T2
read(A)
A := A×2
write(A)
read(B)
B := B×2
write(B)
read(A)
A := A+100
write(A)
read(B)
B := B+100
write(B)

ㄴ.
T1T2
read(A)
A := A+100
read(A)
A := A×2
write(A)
write(A)
read(B)
B := B×2
read(B)
B := B+100
write(B)
write(B)

ㄷ.
T1T2
lock(A)
read(A)
A := A+100
write(A)
unlock(A)
lock(A)
read(A)
A := A×2
write(A)
unlock(A)
lock(B)
read(B)
B := B×2
write(B)
unlock(B)
lock(B)
read(B)
B := B+100
write(B)
unlock(B)

ㄹ.
T1T2
lock(A)
read(A)
A := A+100
write(A)
lock(B)
unlock(A)
lock(A)
read(A)
A := A×2
write(A)
read(B)
B := B+100
write(B)
unlock(B)
lock(B)
unlock(A)
read(B)
B := B×2
write(B)
unlock(B)
1
ㄱ, ㄴ
2
ㄱ, ㄹ
3
ㄴ, ㄷ
4
ㄷ, ㄹ
해설

정확한 결과를 보장하는 스케줄은 ㄱ, ㄹ이다. 직렬 수행 결과는 T1 후 T2이면 A=B=300, T2 후 T1이면 A=B=200이다.

ㄱ은 T2 후 T1을 수행하는 직렬 스케줄로 A=B=200이다. ㄹ은 T1이 B의 로크를 얻은 뒤에야 A를 해제하는 2단계 로킹을 지켜 A=150→300, B=150→300으로 T1 후 T2 직렬 결과와 같다.

  • ㄴ: T1과 T2가 모두 A=50, B=50을 읽어 한쪽 갱신이 덮어써지는 갱신 손실이 생기고 A=150, B=100이 된다.
  • ㄷ: 로크를 쓰지만 항목마다 바로 해제해 A는 T1 후 T2(300), B는 T2 후 T1(200) 순으로 섞여 직렬 결과와 다르다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[7급 국가직 데이터베이스론] 22년 1회차 25문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요7급 국가직 데이터베이스론 기출문제 암기장 전체 보기