CS/정처기
트랜잭션
spring_sunshine
2024. 1. 22. 15:26
트랜잭션
- 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위
- 인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성이다.
- 트랜잭션 특징으로 원자성, 일관성, 격리성(고립성), 영속성이 있다.
- 원자성 (Atomicity)
- 트랜잭션의 연산 전체가 모두 정상 실행 or 모두 취소가 되어야 하는 성질
- Commit과 Rollback에 의해 원자성을 보장받는다.
- 일관성 (Consistency)
- 시스템의 고정요소는 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 하는 성질
- 병행 제어(concurrency control): 다수 사용자 환경에서 여러 트랜잭션을 수행할 때, 데이터베이스 일관성 유지를 위해 상호작용을 제어하는 기법
- 미보장 시 문제점: 갱신 손실, 현황 파악 오류, 모순성, 연쇄 복귀
- 종류: 로킹, 낙관적 검증, 타임 스탬프 순서, 다중 버전 동시성 제어
- 격리성 (Isolation)
- 동시 실행되는 트랜잭션들이 서로 영향을 미치지 않아야 한다는 성질
- 데이터베이스 고립화 수준(isolation level): Read Uncommittd < Read Committed < Repeatable Read < Serializable Read
- 영속성 (Durability)
- 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장되어야 하는 성질
- 회복 기법 → 로그기반 회복기법, 체크포인트 회복기법, 그림자 페이징 회복기법
트랜잭션 상태 변화
- 활동 (Active)
- 초기 상태, 트랜잭션이 실행 중일때
- 부분완료 (Partially Committed)
- 마지막 명령문이 실행된 후 갖는 상태
- 모든 연산의 처리는 끝났지만 트랜잭션이 수행한 최종 결과를 DB에 반영하지 않은 상태
- 완료 (Committed)
- 트랜잭션이 성공적으로 완료된 후 갖는 상태
- 실패 (Failed)
- 정상적인 실행이 더이상 진행될 수 없을 때 갖는 상태
- 철회 (Aborted)
- 트랜잭션이 취소되고 DB가 트랜잭션 시작 전의 상태로 환원된 상태
- 트랜잭션 수행이 실패하여 Rollback을 실행한 상태