ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [오라클로 배우는 데이터베이스 개론과 실습] 8장 연습문제
    Database 2020. 6. 16. 00:29

    오라클로 배우는 데이터베이스 개론과 실습 8장 연습문제 풀이입니다.

    학교 과제로 혼자서 푼 내용을 공유합니다. 오류가 있다면, 댓글로 알려주세요 :)

     

     

    (연습문제)

     

    1. 트랜잭션은 일련의 연산 집합이란 의미로, 하나의 논리적인 기능을 수행하는 작업의 단위다. 트랜잭션이 가져야할 성질로 거리가 먼 것은?

    병행성(Concurrency)

    [풀이] 트랜잭션의 4가지 성질 : 원자성(Atomicity) 일관성(Consistency), 고립성(Isolation), 지속성(Durability)

     

     

    2. 트랜잭션에 대한 설명으로 옳지 않은 것은?

    트랜잭션 연산이 데이터베이스에 모두 반영되지 않고 일부만 반영되는 것을 원자성이라고 한다.

    [풀이] 원자성은 트랜잭션이 원자처럼 더 이상 쪼개지지 않는 하나의 프로그램 단위로 동작해야하는 것을 의미한다.

     

     

    3. 트랜잭션의 성질에 대한 설명으로 옳지 않은 것은?

    어느 하나의 트랜잭션 실행 중에 다른 트랜잭션이 동시에 실행될 수 없다.

    [풀이] 

    ① 트랜잭션의 연산은 데이터베이스에 모두 반영되든지, 아니면 모두 반영되지 않아야 한다. - 원자성

    ② 트랜잭션 수행이 성공적으로 완료되면 데이터베이스는 언제나 일관성 있는 상태를 유지해야 한다. - 일관성

    ③ 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션이 동시에 실행될 수 없다. - 동시 실행 가능하며, 이는 독립성에 해당

    ④ 트랜잭션에 의해서 생성된 결과는 데이터베이스에 영구히 저장되어야 한다. - 지속성

     

     

    4. 트랜잭션의 동시성에 관한 설명 중 옳지 않은 것은?

    2단계 락킹을 사용하면 데드락 현상은 발생하지 않는다.

    [풀이] 2단계 락킹을 사용하면 데드락 현상이 발생할 수도 있다.

     

     

    5. 병행제어의 락킹(locking) 단위에 대한 설명으로 옳지 않은 것은?

    락킹 단위가 작아지면 병행성 수준이 낮아진다

    [풀이] 

    락킹 단위가 크면 -> 락의 수가 작아지고 -> 제어 간단 -> 병행성 감소

    락킹 단위가 작으면 -> 락의 수가 많아지고 -> 제어 복잡 -> 병행성 증가

     

     

    6. 병행제엉 영향을 주는 요소로 한 번에 락(lock)이 되어야 할 데이터의 크기를 락킹단위(locking granularity)라고 한다. 이 단위가 클 경우에 대한 설명으로 옳지 않은 것은?

    ① 병행성 수진이 높아진다.

    [풀이] 5번 풀이 참고

     

     

    7. 2단계 락킹에 대한 설명으로 옳지 않은 것은?

    ③ 교착상태를 예방할 수 있다.

    [풀이] 교착상태란 데드락을 의미하는 또 다른 말이다. 데드락은 2단계 락킹 기법을 사용해 데이터 일관성을 유지하지만 두 개 이상의 트랜잭션이 각각 자신의 데이터에 대해 락을 획득하고 상대방 데이터에 대해 락을 요청해 무한대기 상태에 빠지는 것을 말한다.

     

     

    8. 하나의 트랜잭션 수행이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상은?

    Dirty Read

    [풀이] 오손읽기(dirty read)는 t1이 t2가 변경한 데이터를 읽어와 작업하는데, t2가 작업 중 철회(Rollback)을 하게 되었을 때 발생함

     

     

    9. 회복을 위한 로그 기록 방법 중 지연 갱신(deferred update)에서 사용하는 방법은 무엇인가?

     NO-UNDO/REDO

    [풀이] 지연갱신 방법은 트랜잭션이 부분완료 상태에 이르기까지 발생한 모든 변경 내용을 로그 파일에만 저장하고 데이터베이스에는 커밋이 발생할 때까지 저장을 지연하는 기법이다. 따라서 UNDO가 필요 없다.

     

     

    10. 오라클의 기본 고립수준은 무엇인가?

    ② READ COMMITTED

    [풀이] 오라클에서는 아무런 설정을 하지 않으면, READ COMMITTED 방식으로 수행된다.

     

     

     

    (심화문제)

     

    12. 다음 트랜잭션 T1, T2가 동시에 실행될 때, 공유락과 배타락을 사용한다. 트랜잭션 T1의 첫 번째 질의의 수행되는 결과는 20이고, 두 번째 질의의 수행결과는 21이다.

    12-(1). 이러한 현상이 일어나는 이유와 현상의 이름을 설명하시오.

    : 반복불가능 읽기 현상이 일어난다. 왜냐하면 T1이 데이터를 읽고 작업하던 중 T2가 데이터를 변경하였다. T1은 변경한 데이터를 보고 다시 작업했다. T2가 COMMIT을 했기 때문에 틀린 데이터는 아니지만, T1 입장에서는 같은 SQL문이 다른 결과를 도출한다. 

     

    12-(2). (1)의 현상을 방지하기 위한 방법을 설명하시오.

    : 트랜잭션 고립 수준 명령어를 사용한다. 이는 DBMS가 트랜잭션을 동시에 실행시키면서 락보다 좀 더 완화된 방법으로 문제를 해결하기 위해 제공하는 명령어이다. 

     

    12-(3). (1)의 현상을 방지하기 위한 SQL문을 작성하시오.

    SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

     

     

    15. 다음은 어느 트랜잭션 T1, T2, T3의 로그 기록이다. 지연 갱신 방법을 사용한다고 가정하고 15번 로그에서 시스템 장애가 일어났을 때 각 트랜잭션 T1, T2, T3를 복구하는 방법에 대해 설명하시오.

    : 로그 9번에서 checkpoint가 기록되었다. 

    T1은 체크포인트 이전에 COMMIT이 기록되었으므로 아무 작업이 필요 없다. 

    T2는 체크포인트 이후에 COMMIT이 기록되었다. 즉, 체크포인트 이후 변경된 내용이 데이터베이스에 반영되지 않았기에 REDO를 실행한다. 

    T3는 체크포인트 이후에 COMMIT이 기록되지 않았다. 따라서 아무 작업도 필요하지 않다.

     

Designed by Tistory.