1. 트랜잭션이란?
: 하나의 논리적인 작업 단위를 구성하는 연산들의 집합이다.
: 실행 중 멈추거나 중단되지 않는 최소 작업 단위
: 데이터베이스 응용 프로그램은 트랜잭션의 집합이다.
1) 트랜잭션의 예 1
-> 만약 이체 업무 중간에 멈춘다면?
계좌에 잘못된 정보가 저장되므로
모든 연산을 완벽히 수행하던지, 아예 처음상태로 돌아가던지 해야 한다. -> all or nothing
2) 트랜잭션의 예 2
: 다중 사용자 환경에서 트랜잭션이 동시에 실행되는 다른 트랜잭션에 의해 영향을 받는다.
- 예금 인출이 동시에 두 지점에서 이루어진다면 오류가 발생한다.
3) 따라서,
앞의 상황이 발생하지 않도록 사전에 DBMS에서 트랜잭션 처리 기능을 갖춰야 한다.
2. 트랜잭션이 지켜야 할 조건
- ACID 특성
Atomicity(원자성)
: 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지, 아니면 실행 전 상태로 되돌아가야 한다.(all-or-nothing)
Consistency(일관성)
: 트랜잭션 실행 전과 후에 데이터베이스 내용이 일관성이 있어야 한다.
Isolation(고립성)
: 트랜잭션이 실행되는 과정에서 갱신된 데이터는 그 트랜잭션이 완료될 때까지 다른 트랜잭션이 참조할 수 없다.
Durability(지속성/영속성)
: 트랜잭션이 성공적으로 완료되면 그 갱신된 내용은 영구적으로
1) 원자성 : 트랜잭션은 성공하거나 실패하거나 둘 중 하나!
-> 실패하더라도 원래 상태로 되돌려놔야 한다.
2) 일관성 : 계좌이체 전과 후의 두 계좌의 잔액의 합은 동일해야 한다.
3) 고립성 : 트랜잭션이 완료될 때까지 다른 트랜잭션이 참조하지 못하게 하는 특성이다.
* 고립성이 만족되는지 확인하려면?
- 동시에 실행하는 트랜잭션들의 실행 결과가 순차적으로 실행된 결과와 동일한지 확인하면 된다.
* 해결 방법 *
- 각 트랜잭션을 순차적으로 실행한다. 다만, 다중 프로그래밍 환경에서 순차적으로 하는 것은 성능 면에서 문제 발생한다.
- 상호 간의 간섭이 일어나지 않도록 하는 기법이 필요하다.
4) 지속성 : 트랜잭션이 성공적으로 완료되면 그 갱신된 내용은 영구적으로
3. 트랜잭션 상태 전이
- 동작 : 트랜잭션이 시작되고 연산들이 정상적으로 실행중인 상태
- 부분완료 : 트랜잭션에 정의된 모든 연산의 실행이 끝난 상태
- 완료 : 트랜잭션이 성공적으로 종료된 상태
- 실패 : 트랜잭션이 성공적으로 완료되지 않고 더 이상 실행되지 못 하는 상태
- 중단 : 실행 이전으로 복귀된 상태
'Computer Science > Database' 카테고리의 다른 글
데이터베이스 설계 7)-3 동시성 제어 (0) | 2020.12.09 |
---|---|
데이터베이스 설계 7)-2 동시성 제어 (0) | 2020.12.09 |
데이터베이스 설계 6)-2 물리적 저장구조와 인덱스 (0) | 2020.12.08 |
데이터베이스 설계 6)-2 물리적 저장구조와 인덱스 (0) | 2020.12.08 |
데이터베이스 설계 6) 물리적 저장구조와 인덱스 (0) | 2020.12.02 |