컴퓨터 공부/Advanced Database

[6월 2일 3교시] Transaction Control

려리군 2009. 6. 2. 11:59

트랜잭션

한명의 사용자에 의해 수행된 하나 이상의 SQL 문장을 포함하는 업무의 논리적 단위.

4가지 속성

원자성(Atomicity) : All or Nothing. 전부 실행하든지 전혀 실행하지 않아야 한다.

일관성(Consistency) : 성공적인 실행시 상태는 모순되지 않고 일관된 상태여야 한다.

격리성(Isolation) : 연산 결과는 다른 트랜잭션에서 접근할 수 없다.

영속성(Durability) : 성공적으로 완료되면 그 결과는 영속적(되돌릴 수 없다.)


트랜잭션은 첫번째 실행가능한 SQL 문장과 함께 시작한다.

DDL, DCL : Automatic Commit, 각 문장 하나가 하나의 transaction

exit를 통한 보통 종료 : automatic commit


트랜잭션 제어 문장

COMMIT 

현재 트랜잭션을 마치고 트랜잭션에서 수행된 모든 변화를 영원히 유지한다. 

이 문장은 트랜잭션의 모든 세이브포인트를 지우고 트랜잭션 잠금(lock)을 해제한다.

ROLLBACK

현재 트랜잭션에서 마친 작업을 이전상태로 되돌린다.

이 문장은 트랜잭션에서 모든 세이브 포인트를 지우고 트랜잭션 잠금(lock)을 해제한다.

SAVEPOINT x

나중에 roll back할 수 있는 위치로 트랜잭션의 위치 x를 표시한다.

ROLLBACK TO x

특정 세이브 포인트 x로 현재 트랜잭션을 되돌린다.


트랜잭션 동안 데이터 상태

ROLLBACK과 COMMIT하기 전

- 영향을 받는 행은 잠겨있기 때문에 다른 사용자는 그 행은 변경할 수 없다.

- 모든 변화는 취소될 수 있다. (undo segment에 저장)

- 현재 사용자 세션은 DML 문장들의 결과를 볼 수 있다.

- 다른사용자와 같은 사용자의 다른 세션조차 현재 사용자 세션에 의해 만들어진 결과를 볼 수 없다.


트랜잭션 잠김(lock) 예시


트랜잭션 잠김(lock) 해제 예시