모두CBT

트랜잭션 T1과 T2가 아래와 같이 수행될 때, T1의 ㉠, ㉡의 출력… | [7급 국가직 데이터베이스론] 21년 1회차 기출문제 상세 페이지

1[7급 국가직 데이터베이스론] 21년 1회차
트랜잭션 T1과 T2가 아래와 같이 수행될 때, T1의 ㉠, ㉡의 출력 값은? (단, 팬텀(phantom)을 초래하는 위반들을 허용하지 않는다)
sale
nonameprice
1a1200
2a2150
3b1100
T1T2
set transaction isolation
level repeatable read;
set transaction isolation
level repeatable read;
start transaction;
start transaction;
insert into sale
values(4, ‘b2’, 50);
select ㉠ sum(price)
from sale;
commit
update sale set price=price+100
where no=3;
select ㉡ sum(price)
from sale;
commit
㉠ ㉡
1
450 550
2
450 600
3
500 600
4
500 500
해설

㉠은 450, ㉡은 550이다.

㉠ 시점에 T2의 삽입은 아직 commit되지 않았으므로 T1은 기존 세 행만 읽어 200+150+100=450을 얻는다.

T2가 commit한 뒤에도 팬텀을 허용하지 않으므로 T1에는 새 행(no=4)이 보이지 않는다. T1이 no=3의 price를 200으로 바꾸었으므로 ㉡은 200+150+200=550이다.

  • ㉡이 600이 되려면 새 행의 50까지 합산되어야 하므로 팬텀 불허 조건에 어긋난다.
  • ㉠이 500이 되려면 commit 전 삽입을 읽는 오손 읽기가 필요하므로 repeatable read에서 불가능하다.

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

이어서 풀어보기

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