본문 바로가기

Programming

트랜잭션

트랜잭션의 정의

트랜잭션은 DBMS에서 데이터베이스를 다룰 때 사용하는 작업의 단위로, 일반 프로그램과 달리 데이터베이스의 데이터를 다루기 때문에 데이터베이스의 무결성을 유지해야 한다. 또한 트랜잭션은 전체가 수행되거나 또는 전혀 수행되지 않아야 한다(all or nothing).

* 데이터베이스에서 데이터를 다룰 때 장애가 일어나는 경우가 있다. 트랜잭션은 장애 시 데이터를 복구하는 작업의 단위가 된다.

* 데이터베이스에서 여러 작업이 동시에 같은 데이터를 다룰 때가 있다. 트랜잭션은 이 작업을 서로 분리하는  단위가 된다.


트랜잭션의 수행과정

트랜잭션은 데이터베이스에 저장된 테이블을 읽어와 주기억장치 버퍼에 저장하고, 버퍼에 저장된 데이터를 수정한 후 최종적으로 데이터베이스에 다시 저장한다. 

BEGIN TRANSACTION

UPDATE Customer
SET balance=balance-10000
WHERE name='사랑과 전쟁';

UPDATE Customer
SET balance=balance+10000
WHERE name='김연아';

COMMIT   <----------------------- 사용자에게 트랜잭션의 종료를 알림

처리된 데이터가 버퍼에서 하드디스크(데이터베이스)로 입력된다.
이 것은 DBMS가 책임지고 일괄적으로 수행함으로 각각의 트랜잭션이 하드디스크에 
개별 접근하는 것을 방지한다.

COMMIT TRANSACTION


트랜잭션의 네 가지 성질

① 원자성 : 트랜잭션에 포함된 작업은 전부 수행되거나 아니면 전부 수행되지 않아야한다.
② 일관성 : 트랜잭션을 수행하기 전이나 수행한 후나 데이터베이스는 항상 일관된 상태를 유지해야한다.
③ 고립성 : 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들어 변경 중인 데이터 값을 훼손해선 안된다.
④ 지속성 : 수행을 성공적으로 완료한 트랜잭션은 변경한 데이터를 영구히 저장해야 한다. 


트랜잭션 제어 명령어

BEGIN TRANSACTION            - 트랜잭션의 시작을 알림
COMMIT (TRANSACTION)       - 트랜잭션의 종료를 알림
SAVEPOINT a;                     - a라는 세이브포인트 생성
ROLLBACK to a;                - a지점으로 롤백한다. a 지점 부터 작업이 없던 일이 된다.
ROLLBACK;                    - 트랜잭션 작업 전체가 없던일이 된다.

'Programming' 카테고리의 다른 글

데이터베이스 권한관련 명령어  (0) 2015.02.16
동시성 제어  (0) 2015.02.15
Unity 용어정리  (0) 2015.02.10
정규화  (0) 2015.02.07
데이터 모델링  (0) 2015.02.07