트랜잭션의 정의
트랜잭션은 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 |