Odds and Ends
Oracle로 배우는 데이터베이스 개론과 실습 8장 연습문제 답 본문
8장 트랜잭션 연습문제 풀이
1. 트랜잭션(Transaction)은 일련의 연산 집합이란 의미로, 하나의 논리적인 기능을 수행하는 작업의 단위이다. 트랜잭션이 가져야할 성질과 거리가 먼 것은?
답: (4) 병행성
풀이: 트랜잭션의 특성에는 원자성, 일관성 고립성, 지속성이 있다.
원자성-트랜잭션에 포함된 작업은 전부 실행 or 전부 수행되지 않아야함
일관성-트랜잭션을 수행하기 전이나 수행한 후나 데이터베이스는 항상 일관
고립성-수행 중인 트랜잭션에 다른 트랜잭션이 끼어들어 변경 중인 데이터값을 훼손하는 일이 없어야함.
지속성-수행을 성공적으로 완료한 트랜잭션은 변경된 데이터를 영구히 저장
2. 트랜잭션에 대한 설명으로 옳지 않은 것은?
답: (4) 트랜잭션 연산이 데이터베이스에 모두 반영되지 않고 일부만 반영되는 것을 원자성이다. -> 원자성 1번 풀이 정의 참고, 모두 반영되거나 전부 반영되지 않아야하는 것이 원자성.
3. 트랜잭션의 성질에 대한 설명으로 옳지 않은 것은?
답: (3) 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션이 동시에 실행될 수 없다.
풀이 : 실행될 수 있음, but 서로 독립적으로 실행되어야하고, 서로 다른 데이터를 사용해야한다.
4. 트랜잭션의 동시성에 관한 설명 중 옳지 않은 것은?
답 : (4) 2단계 락킹을 사용하면 데드락 현상은 발생하지 않는다.
풀이 : 데드락 현상은 두 개 이상의 트랜잭션이 각각 자신의 데이터에 대해 락을 획득하고 상대방 데이터에 대하여 락을 요청하면 무한 대기 상태에 빠질 수 있는 현상인데, 2단계 락킹은 두 개의 트랜잭션이 동시에 실행될 때 일관성을 방지하기 위해 락을 걸고 해제하는 시점에 제한을 두는 방법으로 데드락 현상이 발생할 수 있다. 데드락을 해결하기 위해서는 작업 중 하나를 강제로 중지시키는 것이다.
5. 병행제어의 락킹(locking) 단위에 대한 설명으로 옳지 않은 것은?
답 : (1) 락킹 단위가 작아지면 병행성 수준이 낮아진다.
풀이 : 락킹 단위가 작아지면 병행성 수준이 높아진다. 락킹 단위 큼-> 락의 수 감소-> 제어 간단 -> 병행 감소
9. 하나의 데이터베이스 시스템 내에서 적절한 제어 없이 트랜잭션들을 동시에 실행하였을 경우 여러 문제가 발생할 수 있다. 이를 해결하기 위한 동시성 제어가 올바르게 동작하지 않을 경우 발생할 수 있는 문제점으로 옳지 않은 것은?
답: (4) 지역적 오류 문제
15. 다음 트랜잭션 T1, T2가 동시에 실행될 때 공유락과 배타락을 사용한다. 트랜잭션 T1의 첫 번째 질의의 수행 결과는 20이고, 두 번째 질의의 수행 결과는 21이다.
(1) 이러한 현상이 일어나는 이유와 현상의 이름을 설명하시오.
답: 반복 불가능 읽기, 데이터를 한번 더 읽었을 때 처음 읽었던 결과와 다른 값이 출력되는 것이다. 이유는 트랜잭션 T1이 데이터를 읽고 작업하는 도중 트랜잭션 T2가 같은 데이터의 값을 변경했기 때문이다.
(2) 트랜잭션 고립 수준 명령어를 사용한다. REPEATABLE READ MODE를 명령어를 사용하면 된다.
(3) SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
12. 회복을 위한 로그 기록 방법 중 지연갱신(defeered update)에서 사용하는 방법은 무엇인가?
답: (3) NO-UNDO/REDO
풀이: 지연 갱신 방법은 로그로 잠깐 기록해두고 데이터베이스에 바로 저장하지 않는 방법으로, 체크포인트 이후 commit기록이 있는 경우는 REDO를 진행(체크 포인트 이후 변경 내용이 데이터베이스에 반영되지 않았음으로), 체크포인트 이후 commit기록이 없는 경우는 아무것도 할필요가 없다. 지연 갱신 방법은 Commit 이전에는 버퍼의 내용을 데이터베이스에 반영하지 않기 때문이다.
18. 다음은 어느 트랜잭션 T1, T2, T3의 로그 기록이다. 지연갱신 방법을 사용한다고 가정하고 15번 로그에서 시스템 장애가 일어났을 때 각 트랜잭션 T1, T2, T3를 복구하는 방법에 대해 설명하시오.
답 & 풀이 : 지연 갱신 방법에서 처리 방식은 12번의 풀이 참조, T1은 commit이 체크포인트 이전이니 아무 작업 필요 없음, T2는 체크포인트 이후이니 REDO를 해주어야함. T3는 어디에도 Commit이 없음으로 아무런 작업 필요 없음.
'오라클로 배우는 데이터베이스 개론과 실습' 카테고리의 다른 글
Oracle로 배우는 데이터베이스 개론과 실습 7장 연습문제 답 (0) | 2021.07.07 |
---|---|
Oracle로 배우는 데이터베이스 개론과 실습 4장 연습문제 답 (0) | 2021.07.07 |
Oracle로 배우는 데이터베이스 개론과 실습 3장 연습문제 답 (0) | 2021.07.07 |