본문 바로가기
컴퓨터과학[3-2]/D.B

데이터베이스 설계 및 구현 - [제13강] 트랜잭션과 데이터 관리

by boolean 2016. 7. 31.
728x90

데이터베이스 설계 및 구현 - [제13강] 트랜잭션과 데이터 관리

트랜잭션 ․잠금 ․데이터 백업과 복원

데이터베이스 용어정리

  • 트렌젝션
    서로 연관된 하나 이상의 명령어들로 이루어진 논리적인 작업 단위
  • 잠금
    트랜잭션 간 테이블 접근을 조정하여 한 트랜잭션이 다른 트랜잭션에서 접근 중인 테이블에 대한 수정을 방지
  • 백업
    DBMS의 결함으로 데이터가 손실되었을 때를 대비하여 데이터 및 데이터 변경하는 작업
  • 요점정리

    1. 트랜잭션은 하나 이상의 작업이 모여 이루어진 하나의 논리적인 작업단위로 한 번에 수행되는 작업이다. 트랜잭션이 만족시켜야 할 조건으로는 원자성(atomicity), 일관성(consistency), 고립성(isolation), 지속성(durability) 등이 있다.
    2. MySQL에서 트랜잭션 처리가 지원되는 엔진은 InnoDB이다. InnoDB에서는 고립성 수준에 따라 자동으로 행 단위의 잠금을 건다. 트랜잭션은 autocommit 모드에 의해 각 SQL 문이 자동 COMMIT될 수 있는데, 이는 autocommit 모드해제 명령을 통해 해제하거나 START TRANSACTION 문을 사용하여 일시적 해제가 가능하다.
    3. 잠금을 이용하여 동시에 특정 자원에 접근하여 수행되는 변경작업에 논리적인 모순이 발생하지 않도록 하여 예상치 못한 결과가 데이터베이스에 발생하지 않도록 한다. 잠금이 수행되는 동안 다른 트랜잭션은 기다리게 되므로 서로 충돌하지 않고 필요한 데이터에 접근할 수 있다. 동시에 여러 명의 사용자가 동일한 데이터에 접근하려고 할 때 데이터베이스는 동시성 제어를 하게 된다.
    4. MySQL에서의 명시적 잠금 작업의 단위는 테이블이다.
    5. 트랜잭션의 고립성 수준은 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE가 있다.
    6. 데이터베이스에 문제가 발생하면 관리자는 신속하게 복원해야 하고, 이 경우 데이터의 원본이 있다면 크게 문제가 되지 않는다. 그러므로 주기적으로 데이터와 트랜잭션에 수행되는 변경작업에 대한 기록인 로그들을 저장해 두어 손쉽게 데이터베이스를 복원해야 한다. 이러한 작업을 백업이라고 한다.
    7. MySQL의 mysqldump 프로그램을 이용하면 간단한 논리적 백업이 가능하다. mysqldump는 워크벤치의 DATA Export에서 활용할 수 있다. 

    연습문제

    • 연습문제1

      다음 중 트랜잭션의 ‘지속성’에 대한 설명은 무엇인가?

      답을 체크하세요
      정답 :
      속성이란 트랜잭션의 결과가 저장장치에 기록되어 영구적으로 존재하는 특성을 나타낸다.
      ①은 원자성, ②은 일관성, ③은 고립성을 설명하고 있다.
    • 연습문제2

      MySQL에서 트랜잭션 처리를 위해 사용하는 엔진은 무엇인가?

      답을 체크하세요
      정답 :
      MySQL은 여러 종류의 데이터베이스 엔진을 지원한다. 그 중 InnoDB는 트랜잭션 처리에 특화된 엔진으로 트랜잭션 관리를 위해서 반드시 테이블 생성 시 InnoDB를 설정해야 한다.
    • 연습문제3

      ‘계좌 이체 시 A계좌에서 5000원이 인출되었으며, B계좌에 반드시 5000원이 입금되어야 한다’라는 조건을 트랜잭션의 어떤 특성을 만족시키는가?

      답을 체크하세요
      정답 :
      은행 계좌에서 계좌의 총 금액은, 계좌 이체 트랜잭션 처리 후에도 동일해야 한다. 이러한 특성을 트랜잭션의 일관성이라고 한다. 즉, 일관성이란 데이터베이스는 트랜잭션 처리 과정에서 잠시 비일관성 상태로 변경되나 트랜잭션 수행 후에는 일관적인 상태로 되돌아온다.
    • 연습문제4

      id가 ‘001’인 계좌에서 id가 ‘002’인 계좌로 5000원을 이체할 때, 잔액이 부족한 경우 밑줄친 빈칸까지 복귀하려고 한다. 다음 중 밑줄 친 빈칸에 알맞은 명령어는?

      START TRANSACTION;
            UPDATE account SET balance=balance-5000
                 WHERE user_id='001';
           (__________) save1;
           UPDATE account SET balance=balance+5000
                WHERE user_id='002';
      ROLLBACK to save1;
      답을 체크하세요
      정답 :
      ROLLBACK은 START TRANSACTION으로 시작된 부분까지 모든 수행된 명령을 복귀한다. 그러나 특정 지점까지 복귀하고 싶은 경우 ‘SAVEPOINT 명칭’으로 지정하고 ‘ROLLBACK 명칭’으로 복귀할 수 있다.
    • 연습문제5

      다음 중 잠금에 대한 설명으로 옳지 않은 것은?

      답을 체크하세요
      정답 :
      잠금 수준이 높아질 수 록 고립성이 강하게 보장되어 잠금 대상이 늘어나 동시에 여러 개의 트랜잭션이 수행될 수 없어 동시성이 저하된다. 또한 교착상태가 늘어날 수 있어 감시 작업이 필요하다.
    • 연습문제6

      다음 중 증분 백업에 대한 설명으로 올바른 것은?

      답을 체크하세요

      정답

      정답

      정답 및 해설
      정답 :
      증분 백업(incremental backup)이란 전체 백업이 이루어진 후, 사용자의 요청을 변경된 데이터만을 백업하는 백업의 형태를 말한다. 


    댓글