반응형

 

 

 

 

 

 

 

 

1. 트랜잭션이란?

: 하나의 논리적인 작업 단위를 구성하는 연산들의 집합이다.

: 실행 중 멈추거나 중단되지 않는 최소 작업 단위

: 데이터베이스 응용 프로그램은 트랜잭션의 집합이다.

 

 

 

 

 

1) 트랜잭션의 예 1

 

 

-> 만약 이체 업무 중간에 멈춘다면?

계좌에 잘못된 정보가 저장되므로 

모든 연산을 완벽히 수행하던지, 아예 처음상태로 돌아가던지 해야 한다. -> all or nothing

 

 

 

2) 트랜잭션의 예 2

: 다중 사용자 환경에서 트랜잭션이 동시에 실행되는 다른 트랜잭션에 의해 영향을 받는다.

 

- 예금 인출이 동시에 두 지점에서 이루어진다면 오류가 발생한다.

 

 

 

3) 따라서,

앞의 상황이 발생하지 않도록 사전에 DBMS에서 트랜잭션 처리 기능을 갖춰야 한다.

 

 

 

 

 

 

 

 

 

 

2. 트랜잭션이 지켜야 할 조건

- ACID 특성

Atomicity(원자성)

:  트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지, 아니면 실행 전 상태로 되돌아가야 한다.(all-or-nothing)

 

Consistency(일관성)

: 트랜잭션 실행 전과 후에 데이터베이스 내용이 일관성이 있어야 한다.

 

Isolation(고립성)

: 트랜잭션이 실행되는 과정에서 갱신된 데이터는 그 트랜잭션이 완료될 때까지 다른 트랜잭션이 참조할 수 없다.

 

Durability(지속성/영속성)

: 트랜잭션이 성공적으로 완료되면 그 갱신된 내용은 영구적으로 

 

 

 

 

 

 

 

 

 

1) 원자성 : 트랜잭션은 성공하거나 실패하거나 둘 중 하나!

-> 실패하더라도 원래 상태로 되돌려놔야 한다.

 

2) 일관성 : 계좌이체 전과 후의 두 계좌의 잔액의 합은 동일해야 한다.

 

3) 고립성 : 트랜잭션이 완료될 때까지 다른 트랜잭션이 참조하지 못하게 하는 특성이다.

 

 

 

* 고립성이 만족되는지 확인하려면? 

- 동시에 실행하는 트랜잭션들의 실행 결과가 순차적으로 실행된 결과와 동일한지 확인하면 된다.

 

 

* 해결 방법 *

- 각 트랜잭션을 순차적으로 실행한다. 다만, 다중 프로그래밍 환경에서 순차적으로 하는 것은 성능 면에서 문제 발생한다.

- 상호 간의 간섭이 일어나지 않도록 하는 기법이 필요하다.

 

 

 

 

4) 지속성 : 트랜잭션이 성공적으로 완료되면 그 갱신된 내용은 영구적으로

 

 

 

 

 

 

3. 트랜잭션 상태 전이

 

 

- 동작 : 트랜잭션이 시작되고 연산들이 정상적으로 실행중인 상태

- 부분완료 : 트랜잭션에 정의된 모든 연산의 실행이 끝난 상태

- 완료 : 트랜잭션이 성공적으로 종료된 상태

- 실패 : 트랜잭션이 성공적으로 완료되지 않고 더 이상 실행되지 못 하는 상태

- 중단 : 실행 이전으로 복귀된 상태

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

+ Recent posts