티스토리 뷰

DATABASE/SQL

[SQL] TRANSACTION

진심스테이크 2018. 4. 19. 14:00

 

 

Transaction : 데이터 베이스 내에서 하나의 그룹으로 처리되어야하는 명령문들을 모아놓은 논리적인 작업 단위

- 여러 단계의 처리를 하나의 처리처럼 다룸

- 여러개의 명령어의 집합이 정상적으로 처리되면 정상종료, 하나의 명령어라도 잘못되면 전체 취소

  -> 이유 : 데이터의 일관성을 유지하면서 안정적으로 데이터를 복구하기위함

 

 

특징

1. 원자성 (Automicity) : 트랜잭션이 데이터 베이스에 모두 반영되던지, 전혀 반영되지 않아야함

2. 일관성 (Consistency) : 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야함

3. 독립성 (Isolation) : 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 경우,

                            어느 하나의 트랜잭션이라도 다른 트랜잭션의 연산을 끼어들 수 없음

4. 지속성 (Durability) : 트랜잭션이 성공적으로 완료되었을 경우, 결과는 영구적으로 반영되어야 함 

 

 

Transaction 상태도

 

 

 

COMMIT : 모든 작업들을 정상적으로 처리

- 하나의 트랜잭션 과정 종료

 

 

 

 

ROLLBACK : 작업 중 문제가 발생되어 트랜잭션의 처리과정에서 발생한 변경사항을 취소

- 트랜잭션으로 인한 하나의 묶음처리가 시작되기 이전의 상태로 되돌림

- 이전에 COMMIT한 곳 까지만 복구

 

 

 

 

 

COMMIT / ROLLBACK 장점

- 데이터 무결성 보장

- 영구적인 변경 전에 데이터의 변경 사항 확인 가능

- 논리적으로 연관된 작업을 그룹화 가능

 

 


 

 

Save Point

- 현재 트랜잭션을 작게 분할

- 저장된 SAVE POINT는 ROLLBACK TO SAVE POINT 문을 사용하여 표시한 곳까지 ROLLBACK 가능

- 사용자가 트랜잭션 중간 단계에서 SAVE POINT 지정 가능

- SAVE POINT는 차후 ROLLBACK과 함꼐 사용하면 특정 SAVE POINT까지 ROLLBACK 가능

 

 

save point 지정

 

 

 

 

특정 지점까지 ROLLBACK

 

 

 


 

 

Q. save point c를 지정 후 commit을 하고, c으로 rollback 하면 어떻게 될까?

A. 오류

   이유 : commit을 하면 임시 저장 포인트인 c1의 의미가 없어져 버림

 

Q. commit을 하고 save point c를 지정해주고, c로 rollback 하면 어떻게 될까?

A. 실행

 

'DATABASE > SQL' 카테고리의 다른 글

[SQL] SCHEMA - 스키마  (0) 2018.04.19
[SQL] 데이터 무결성  (1) 2018.04.19
[SQL] DML  (1) 2018.04.19
[SQL] DDL  (0) 2018.04.19
[SQL] GROUP FUNCTION  (0) 2018.04.18
댓글