인용하는 그림은 다양한 곳에서 가져왔음을 밝힙니다
Ch 14. 트랜잭션
Section 1. 트랜잭션의 개념
- 트랜잭션(transaction) : 데이터베이스 내에서 하나의 논리적 기능을 수행하기 위해 행해지는 한꺼번에 사용 되는 하나 이상의 쿼리를 모아
쪼갤 수 없는 작업의 논리적인 단위(logical unit of work)
Section 2. 트랜잭션의 ACID 특성
- Atomicity(원자성)
- Consistency(일관성)
- Isolation(고립성)
- Durability(지속성)
2.1 원자성
- 수행을 시작하면 한꺼번에 완전하게 전체가 수행이 완료되거나 아니면 어더한 연산도 수행되지 않는 All or Nothing 방식이다.
2.2 일관성
- 트랜잭션 시작 전후에 일관성 있는 DB상태를 유지 한다.
2.3 고립성
- 트랜잭션 작업 수행중에 다른 트랜잭션에 영향을 주어서도 안되고, 받아서도 안된다.
2.4 지속성
트랜잭션 작업이 성공적으로 수행되어 DB에 반영되었으면, 그 결과가 영구적으로 DB에 저장되어야 한다.
일반적으로 모든 트랜잭션은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있다.
Section 3. 트랜잭션의 원자성을 제공하기 위한 연산
- COMMIT, ROLLBACK이 있다.
3.1 트랜잭션의 성공적인 종료, COMMIT
- COMMIT : 트랜잭션이 성공적으로 종료하고, 데이터베이스가 새로운 일관된 상태를 가질 때, 지속성이 보장되도록 DB에 반영하는 연산
- BEGIN TRANSACTION;
SQL들~~
COMMIT;
3.2 트랜잭션의 비정상적인 종료, ROLLBACK
- 트랜잭션이 성공하지 못했을 때, 트랜잭션이 수행한 모든 변경 연산을 복귀시키거나 취소하는 연산
- ROLLBACK;
Section 4. 트랜잭션 상태 및 DBMS와의 관계
4.1 트랜잭션의 상태
상태 | |
---|---|
활동(active) | 실행중인 상태 |
부분 완료(partially committed) | 트랜잭션이 마지막 명령문을 실행시킨 직후의 상태를 의미 |
실패(failed) | 실행 중 장애나 오류 발생 |
완료(committed) | 성공적으로 완료되어 COMMIT 연산을 수행한 상태 |
철회(aborted) | 실행이 실패해 ROLLBACK 연산을 수행한 상태 |
4.2 트랜잭션 특성과 DBMS 기능과의 관계
트랜잭션 특성 | DBMS 기능 |
---|---|
원자성 | 회복 |
일관성 | 동시성 제어 또는 병행 제어, 무결성 제약조건 |
고립성 | 동시성 제어 또는 병행 제어 |
지속성 | 회복 |