다음 두 트랜잭션이 테이블 R(A, B)에 대해 병행 수행되고 있다. … | [7급 국가직 데이터베이스론] 22년 1회차 기출문제 상세 페이지
1[7급 국가직 데이터베이스론] 22년 1회차
다음 두 트랜잭션이 테이블 R(A, B)에 대해 병행 수행되고 있다. 트랜잭션 T2에서 “select sum(B) from R;”의 결과가 항상 동일한 값을 출력하도록 보장하는 트랜잭션 고립성 수준(isolation level)은? (단, 테이블 R의 속성 A, B의 도메인은 정수이다)
| T1 | T2 |
|---|---|
| begin transaction; insert into R values (3, 150); commit; | begin transaction; select sum(B) from R; select sum(B) from R; commit; |
1
직렬가능(SERIALIZABLE)
2
반복 가능한 읽기(REPEATABLE READ)
3
커밋된 데이터 읽기(READ COMMITTED)
4
커밋되지 않은 데이터 읽기(READ UNCOMMITTED)
해설
직렬가능(SERIALIZABLE) 수준이어야 두 번의 sum(B) 결과가 항상 같다. T1의 insert는 새 투플을 추가하므로 팬텀 읽기를 막아야 한다.
두 select 사이에 T1이 (3, 150)을 삽입·커밋하면 두 번째 합계가 150만큼 커질 수 있다. SQL 표준 고립성 수준 중 팬텀까지 막는 것은 SERIALIZABLE뿐이다.
- 반복 가능한 읽기: 이미 읽은 투플의 변경은 막지만 새로 삽입된 투플(팬텀)은 허용한다.
- 커밋된 데이터 읽기: 반복 불가능 읽기와 팬텀이 모두 발생할 수 있다.
- 커밋되지 않은 데이터 읽기: 오손 읽기까지 허용하는 가장 낮은 수준이다.
오류나 개정된 내용이 보이면 알려주세요