본문 바로가기

자린고비 독학하기/자린고비 코딩하기

SQL - 트랜잭션

반응형

 

 

 

트랜잭션

  • 여러 쿼리가 묶인 하나의 연산 단위
  • 트랜잭션은 ROLLBACK 되거나 COMMIT 되는 두 가지 중 하나만 가질 수 있다.

 

트랜잭션의 특징

 

  • 원자성 (Atomicity) - 반영 or 미반영
  • 일관성 (Consistency) - 적용되는 결과가 일관적
  • 독립성 (Isolation) - 트랜잭션이 상호의 연산 방해 불가능
  • 영속성 (Durability) - 한번 수행된 것은 쭉 저장되어야 함

 

 

트랜잭션의 상태

  • ROLLBACK
  • COMMIT
  • SAVEPOINT

 

 

ROLLBACK

  • 이전 DML 수행에 대해서 취소하는 연산
  • COMMIT이 되기 전까지는 ROLLBACK을 통해 수행한 연산들을 취소할 수 있다.

 

수행한 DELETE 연산이 취소되고, 이전의 상태로 돌아갔다. 

 

 

COMMIT

  • 한 트랜잭션의 수행을 마치고, 결과를 영속적으로 저장하는 연산
  • 한번 COMMIT 된 것은 ROLLBACK으로 되돌릴 수 없다.

 

 

 

 

  • 자동 COMMIT / ROLLBACK  되는 경우 

 

구분

자동 유무

SQL*PLUS가 정상 종료된 경우

자동 COMMIT

SQL*PLUS가 정상 비정상 종료된 경우

자동 ROLLBACK

DDL과 DCL 명령문이 수행된 경우

자동 COMMIT

장애가 일어난 경우(정전, 비정상동작)

자동 ROLLBACK

 

 

  • 자동 COMMIT: DDL / DCL 언어를 사용한 경우

DDL 명령어가 수행되어 해당 연산은 자동 COMMIT이 이루어졌다. 

 

 

DDL이 정상적으로 수행되지 않아도 AUTO COMMIT이 일어난다.

 

 

SAVEPOINT

 

  • 현재의 트랜잭션을 작게 분할해 COMMIT 되기 전, 돌아갈 수 있는 저장점을 만드는 것
  • 직관적으로, 게임의 세이브 포인트를 생각하면 된다.

 

 

SAVEPOINT SP1; / SAVEPOINT SP2; 

 SAVEPOINT SP2;

 

  ROLLBACK TO SP2; / ROLLBACK TO SP1;

해당 지점으로 ROLLBACK 할 수 있다.

 

 

ROLLBACK TO SP1; / ROLLBACK TO SP2;

SP2가 더 뒤에 선언되었으므로, SP1을 불러 오면서 해당 SAVEPOINT는 사라졌다.

 

반응형

'자린고비 독학하기 > 자린고비 코딩하기' 카테고리의 다른 글

SQL - INDEX  (1) 2019.08.05
SQL - 뷰 (VIEW)  (0) 2019.08.05
SQL - DML  (0) 2019.08.01
SQL - DATA DICTIONARY VIEW  (0) 2019.08.01
SQL - JOIN  (0) 2019.07.31