데이터베이스

트랜잭션 제어 ROLLBACK, COMMIT

야생늑대 2022. 4. 18. 18:35
반응형

하나의 단위로 데이터를 처리하는 트랜잭션

  • 관계형 데이터베이스에서 하나의 작업 또는 밀접하게 연관된 작업을 수행을 위해 나눌 수 없는 최소 수행 단위를 말한다.
  • 트랜잭션 내에 있는 여러 명령어를 한 번에 수행하여 작업을 완료하거나 아예 모두 수행하지 않는 상태, 즉 모든 작업을 취소한다.
  • 이러한 특성으로 트랜잭션 의미를 'ALL OR NOTHING' 문장으로 설명하기도 한다.
  • 트랜잭션을 제어하기 위해 사용하는 명령어를 TCL(Transaction Control Language)이라고 한다.

트랜잭션의 필요성.

조작명령어를 하나씩 실행하다가 천재지변 또는 데이터베이스 서버에 갑작스런 문제로 인해 명령어를 실행하지 못하는 상황이 발생했을때 데이터가 유실되는 상황이 일어나는 것을 막기위해 사용한다.

 

트랜잭션을 제어하는 명령어

  • 트랜잭션에 묶여있는 데이터 조작어(DML)의 수행상태는 모든 명령어가 정상적으로 수행 완료된 상태 또는 모든 명령어가 수행 되지 않아 취소된 상태, 이 두가지 상태로만 존재할 수 있다.
  • 트랜잭션 명령어는 데이저 조작상태를 이 두가지 상태 중 하나로 유도하는 명령어를 의미한다.
  • 즉 데이터 조작을 데이터베이스에 영구히 반영하거나 작업 전체를 취소한다.

 

트랜잭션을 취소하고 싶을 때 ROLLBACK

ROLLBACK

▶ 위의 SQL문은 INSERT, UPDATE, DELETE외에 별다른 작업을 하지 않았기 때문에 하나의 트랜젝션에 속해 있는 상황이다.

▶ 이럴 때 모든 작업을 취소하고 싶다면 ROLLBACK 명령어를 사용해서 현재 트랜잭션에 포함된 데이터 조각 관련 명령어의 수행을 모두 취소할 수 있다.

▶ ROLLBACK을 사용해서 데이터 조작어를 사용하기 전으로 데이터가 돌아간 걸 볼 수 있다.

▶ 즉 앞에서 실행한 데이터 조각 관련 명령어 실행이 모두 취소되었다.

 

트랜잭션을 영원히 반영하고 싶을 때는 COMMIT

  • ROLLBACK과 달리 지금까지 수행한 트랜잭션 명령어를 데이터 베이스에 영구히 반영할 때 사용한다.
  • COMMIT 명령어를 사용하면  COMMIT을 사용하기전으로 돌아갈 수 없다. ROLLBACK도 불가능.
  • 그러므로 COMMIT은 트랜잭션 작업이 정상적으로 수행되었다고 확신할 때 사용해야 한다.
  • 실무에서도 COMMIT을 잘못 사용하여 낭패를 보는 상황이 꽤 자주 발생한다고 한다.
  • COMMIT으로 실행한 내용의 반영은 되돌릴 수 없으므로 정말 신중하게 진행해야 한다.

트랜잭션 명령어를 사용하면 트랜잭션이 종료되고 새로운 트랜잭션이 시작된다.

 

반응형