29. 트랜잭션(Transaction)

트랜잭션(Transaction)
데이터베이스 응용에서 하나의 논리적 기능을 구성하는 연산의 집합을 말합니다.
원자성(Atomicity), Consistency(일관성), 지속성(Drurability), 독립성(Isolation) 특징을 갖습니다.
Commit 연산으로 트랜잭션 작업을 성공으로 완료한다.
Rollback 연산으로 트랜잭션 도중에 수행한 모든 연산을 취소한다.

원자성(Atomicity)
트랜잭션의 일부만 수행한 상태로 종료할 수 없다.

Consistency(일관성)
트랜잭션을 완료하면 일관상 있는 데이터베이스 상태로 변환한다.
시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 수행 후의 상태가 같아야 한다.

지속성(Drurability)
트랜잭션을 완료한 결과는 영구적으로 반영한다.

독립성(Isolation)
하나의 트랜잭션이 수행 중에 다른 트랜잭션의 연산이 끼어들 수 없다.

트랜잭션의 상태
활동(Active): 트랜잭션을 수행 중인 상태
실패(Failed): 트랜잭션 수행 중에 오류가 발생하여 중단 상태
철회(Aborted): 트랜잭션을 비정상적으로 종료하여 Rollback을 수행한 상태
부분 완료(Partially Committed): 트랜잭션의 마지막 연산까지 수행하였고 Commit연산을 수행하기 직전의 상태
완료(Committed): 트랜잭션을 성공적으로 종료한 상태, Commit 연산을 실행한 이후의 상태

회복(Recovery)
트랜잭션 도중에 손상된 데이터베이스를 이전 상태로 복귀하는 작업
트랙잭션의 연산을 수행할 때 데이터베이스를 변경하기 전에 로그 데이터를 생성합니다.
취소(Undo) 연산으로 이미 데이터베이스에 쓰여진 것도 수정할 수 있습니다.

장애의 유형
트랜잭션 장애, 시스템 장애, 미디어 장애

즉각 갱신 기법(Immediate Update)
트랜잭션의 연산을 수행하여 데이터를 갱신할 때 실제 데이터 베이스에 반영하는 기법
갱신한 모든 내용을 로그(Log)에 보관합니다.
회복 작업을 위해 취소(Undo)와 재시도(Redo) 모두 사용할 수 있습니다.

연기 갱신 기법(Deffered Updatae)
트랜잭션을 완료할 때까지 데이터베이스에 갱신을 연기하는 기법
트랜잭션 수행으로 갱신할 내용은 로그(Log)에 보관합니다.
트랜잭션이 부분 완료 시점에 Log의 기록을 실제 데이터 베이스에 반영합니다.
트랜잭션 수행 중에 장애가 발생하여 Rollback하여도 취소(Undo)할 필요가 없습니다.
재시도(Redo) 작업을 통해 최근의 정상적인 데이터베이스로 회복한 후에 트랜잭션을 재실행할 수 있습니다.

검사점 기법(Check Point)
트랜잭션 중간에 검사점을 로그에 보관하여 트랜잭션 전체를 취소하지 않고 검사점까지 취소할 수 있는 기법

그림자 페이지 대체 기법(Shadow Paging)
트랜잭션의 연산으로 갱신할 필요가 있을 때 복사본인 그림자 페이지를 보관하는 기법
트랜잭션을 취소할 때 그림자 페이지를 이용하여 회복
로그(Log), 취소(Undo), 재시도(Redo)할 필요가 없습니다.