트랜잭션 관리

반응형
  • 트랜잭션의 정의
    • 전부 완료되거나 또는 전부 복구되어야 하는 작업의 논리적 단위
    • 한번에 수행되어야 할 데이터베이스 연산들의 일련의 연속으로써 Read와 Write 연산들로 구성
    • 동시성 제어와 회복을 위한 기법들의 근본임
         
  • 트랜잭션의 특성
    데이터 무결성을 보장하기 위해 DBMS는 다음의 ACID 성질을 유지해야 함
    • 원자성(Atomicity)
      트랜잭션의 모든 연산 수행 결과가 모두 데이터베이스에 반영(All)되거나 또는 전혀 반영되지 않아야(Nothing) 하는 특성
      • COMMIT
        트랜잭션의 성공적인 완료로, 이 결과 트랜잭션의 변경 작업이 데이터베이스에 영구적으로 반영됨
      • ROLLBACK
        트랜잭션을 처음 상태로 복구하는 것으로, 이 결과 데이터베이스에 대한 트랜잭션 변경 작업이 취소됨(Undo)
    • 일관성(Consistency)
      • 트랜잭션의 실행이 데이터베이스를 하나의 일관된 상태에서 또 다른 일관된 상태로 변환하는 특성
      • 한 트랜잭션이 성공적으로 실행을 완료하면 데이터베이스는 모순 없이 일관성이 보존되는 특성
      • 트랜잭션이 수행 중에는 데이터베이스가 일시적으로 비일관성 상태에 놓여질 수 있음
    • 고립성(Isolation)
      • 한 트랜잭션이 하나의 데이터 처리를 완료할 때까지, 자신이 변경한 데이터의 내용을 다른 트랜잭션이 참조할 수 없도록 보장하는 특성
      • 다수의 트랜잭션이 동시에 실행될 수 있다 하더라도, 각 트랜잭션의 연산 수행의 중간 결과를 다른 트랜잭션이 이용하지 못하도록 함
      • 각 트랜잭션은 다른 트랜잭션들이 동시에 실행되고 있는 환경과는 무관하게 데이터베이스의 일관성을 유지하는 특성
    • 지속성(Durability)
      트랜잭션이 성공적으로 완료된 후에 트랜잭션에 의해 이루어진 데이터베이스의 변경은 시스템 장애가 발생한다 하더라도 유지되어야 하는 특성
    •    
  • 트랜잭션의 상태 전이
    • 데이터베이스에 대해 접근 연산을 수행하는 트랜잭션은 다음의 5가지 상태 중 하나에 존재하게 됨
      • 활성(Active) 상태
        트랜잭션 실행을 시작했거나 실행 중인 상태
      • 부분 완료(Partially Committed) 상태
        트랜잭션이 마지막 명령을 실행한 후의 상태
      • 실패(Failed) 상태
        정상적인 실행을 더 이상 수행할 수 없음이 발견된 후의 상태
      • 철회 상태
        트랜잭션이 복구되어 데이터베이스가 트랜잭션 수행 이전 상태로 환원된 후의 상태(철회 이후의 옵션은 restart 또는 kill)
      • 완료 상태
        트랜잭션이 성공적으로 완료된 상태
    • 트랜잭션의 상태 다이어그램
    •    
  • 트랜잭션의 일관성 수준(SQL 92)
    • 직렬 가능(Serializable)
      • 묵시적 수준
      • 2단계 락킹 규약(2 Phase Locking Protocol)
    • 반복 가능 판독(Repeatable Read)
      • 오직 완료된 레코드만 판독될 수 있으며, 같은 레코드의 반복적인 판독은 동일한 값을 반환
      • 트랜잭션은 직렬 가능하지 않을 수 있음(즉, 유령 현상 발생 가능)
        • 유령현상 : 스캔하는 트랜잭션은 다른 트랜잭션이 삽입한 튜플들은 볼 수 있지만, 다른 튜플들은 볼 수 없는 현상
      • Degree-two Consistency) : 2단계 락킹 규약과 달리 S-락은 아무 때나 해제될 수 있고, 락들은 아무 때나 걸 수 있으며, 또한 X-락은 트랜잭션의 끝(즉, Commit이나 Abort)까지 유지
    • 판독 완료(Read Committed)
      • 오직 완료된 레코드만이 판독될 수 있지만, 계속적인 레코드 판독들이 다른(완료된) 값들을 반환할 수 있음
      • Cursor Stability : 판독을 위해 각 튜플은 S-락이 걸리고, 판독되고, S-락이 즉시 해제되며, 또한 기록을 위해 각 튜플에 대한 X-락은 트랜잭션의 끝까지 유지(즉, 튜플-수준락)
    • 판독 비완료(Read Uncommitted)
      • 비완료된 레코드들도 판독될 수 있음
      • 일관성의 하위 수준은 데이터베이스에 대한 근사(Approximate) 정보를 수집하는데 유용함
반응형

'밥벌이 > 데이터베이스' 카테고리의 다른 글

데이터베이스 회복의 개요  (0) 2011.03.10
데이터베이스 회복기법  (0) 2011.03.10
동시성(병행) 제어  (0) 2011.03.01
데이터 무결성  (0) 2011.02.20
데이터베이스 보안  (0) 2011.02.20