트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미함
상태 변화는 질의어(SQL)를 이용하여 데이터베이스에 접근하는 것, SELECT
, INSERT
, DELETE
, UPDATE
등
트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위임
사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위임
하나의 트랜잭션은 Commit되거나 Rollback됨
원자성(Atomicity)
트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 함
트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 함
일관성(Consistency)
트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환함
시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 함
독립성,격리성(Isolation)
둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음
수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없음
영속성, 지속성(Durablility)
데이터 부정합 방지
데이터베이스 서버에 여러 개의 클라이언트가 동시에 액세스하는 경우
응용프로그램이 갱신을 처리하는 과정에서 중단될 수 있는 경우
데이터베이스의 완전성 유지 확신
데이터베이스가 수행한 일부 쿼리가 남으면 안됨(송금시 한 계좌에서 인출 -> 다른 계좌에서 입금 확인)
트랜잭션은 서로 간섭하면 안됨(쿼리 하나 실패 -> 데이터베이스 시스템이 전체 트랜잭션 또는 실패한 쿼리 롤백)
거래의 안정성 확보
테이블에서 데이터를 읽어옴(다른 테이블에 데이터 입력,갱신,삭제 도중 오류 발생, 모든 작업 원상태로 되돌림)
처리 과정이 모두 성공했을 때만 최종적으로 데이터베이스에 반영
한 개의 논리적 단위(트랜잭션)에 대한 작업이 성공적으로 끝났고 데이터베이스가 다시 일관된 상태에 있을 때, 이 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산임
처리 과정을 데이터베이스에 영구적으로 저장, 커밋 수행 후 하나의 트랜잭션 과정 종료, 이전 데이터가 완전히 업데이트 됨
하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성을 깨뜨렸을 때, 이 트랜잭션의 일부가 정상적으로 처리되었더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행한 모든 연산을 취소하는 연산임
롤백시에는 해당 트랜잭션을 재시작하거나 폐기함
임시저장, 부분저장, 전체가 아닌 특정 부분에서 트랜잭션을 취소 위해 사용
현재의 트랜잭션 작게 분할 가능, 여러 개의 SQL문의 실행을 수행하는 트랜잭션의 경우, 사용자가 트랜잭션 중간 단계에서 지정 가능
취소 지점 명시 -> 그 지점까지 작업 취소
활동(Active) : 트랜잭션이 실행중인 상태
실패(Failed) : 트랜잭션 실행에 오류가 발생하여 중단된 상태
철회(Aborted) : 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태
부분 완료(Partially Committed) : 트랜잭션의 마지막 연산까지 실행했지만, Commit 연산이 실행되기 직전의 상태
완료(Committed) : 트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태
UNDO로 취소했던 작업을 마음이 바뀌어 다시 되돌리는 작업, 취소를 취소
이미 커밋한 트랜잭션의 수정을 재반영하는 복구 작업, 사용자가 했던 작업을 그대로 다시 복구
컴퓨터로 무언가를 작업할 때 마음이 들지 않아 조금 전으로 되돌리고 싶을 때 행하는 작업, 방금전에 했던 일을 취소
아직 완료되지 않은 트랜잭션이 수정한 페이지들도 디스크에 출력될 수 있으므로, 해당 트랜잭션이 어떤 이유든 정상적으로 종료될 수 없게 되면 트랜잭션이 변경한 페이지들은 원상 복구되어야함
사용자가 했던 작업을 반대(원상태)로 복구, 무효화
트랜잭션 철회
시스템은 정상적으로 동작하고 있으며, 특정 트랜잭션만 철회하는 경우
로그를 역방향 탐색하면서 해당 트랜잭션의 UNDO 복구가 필요한 로그를 찾아 이에 해당하는 UNDO 연산을 수행
UNDO 작업에 대한 REDO 전용 로그 기록
이전 로그 계속 탐색하면서 해당 트랜잭션의 시작 로그까지 도달
재시작 복구
장애 발생 이후 데이터베이스 시스템이 재시작 복구 하는 경우
로그 분석 단계
REDO 복구 단계
UNDO 복구 단계