[DB] 트랜잭션 (COMMIT, ROLLBACK)

emz·2022년 8월 7일
0

트랜잭션

  • 트랜잭션이란 '거래'라는 뜻으로 데이터베이스 내에서 하나의 그룹으로 처리되어야 하는 명령문들을 모아 놓은 논리적인 작업 단위이다.
  • 여러 단계의 처리를 하나의 처리처럼 다루는 기능
    ->여러 개의 명령어의 집합이 정상적으로 처리되면 정상 종료된다.
    -> 하나의 명령어라도 잘못되면 전체 취소된다.
  • 트랜잭션을 쓰는 이유는 데이터의 일관성을 유지하면서 안정적으로 데이터를 복구하기 위함.

트랜잭션의 종류

  • 트랜잭션에는 내가 적은 쿼리문과 데이터를 최종적으로 데이터베이스에 반영하는 COMMIT과 실패했을 때 COMMIT 시점으로 다시 돌아가는 ROLLBACK이 있다.
  1. 활동 : 트랜잭션이 실행 중에 있는 상태, 연산들이 정상적으로 실행 중인 상태
  2. 실패 : 트랜잭션이 실행에 오류가 발생하여 중단된 상태
  3. 철회 : 트랜잭션이 비정상적으로 종료되어 ROLLBACK 연산을 수행한 상태
  4. 부분적 완료 : COMMIT 연산이 실행되기 직전의 상태로 아직 작성한 것들을 저장하지 않은 상태
  5. 완료 : 트랜잭션이 성공적으로 종료되어 COMMIT 연산을 실행한 후의 상태

COMMIT

  • 모든 작업을 정상처리 하겠다고 확정하는 명령어
  • 트랜잭션의 처리과정을 데이터베이스에 반영하기 위해, 변경된 내용을 모두 영구 저장한다.
  • COMMIT을 수행하면, 하나의 트랜잭션 과정을 종료하게 된다.
  • TRANSACTION(INSERT, UPDATE, DELETE) 작업 내용을 실제 데이터베이스에 저장한다.
  • 이전 데이터가 변경된 데이터로 완전히 UPDATE 된다.
  • COMMIT 후 모든 사용자가 변경된 데이터의 결과를 볼 수 있다.
  • COMMIT 이후 데이터 상태
    -> 데이터에 대한 변경 사항이 물리적 디스크에 반영된다.
    -> COMMIT 이전 데이터는 복수할 수 없다.
    -> 모든 사용자가 변경된 결과를 볼 수 있다.
    -> 트랜잭션과 관련된 행의 잠금이 풀리며 다른 사용자들이 조작할 수 있다.

ROLLBACK

  • 작업 중 문제 발생 시, 트랜잭션의 처리과정에서 발생한 변경 사항을 취소하고, 트랜잭션 과정을 종료시킨다.
  • 트랜잭션으로 인한 하나의 묶음 처리가 시작되기 이전 상태로 되돌아간다.
  • TRANSACTION(INSERT, UPDATE, DELETE) 작업 내용을 취소한다.
  • 이전 COMMIT 한 곳까지만 복구된다.
  • ROLLBACK 이후 데이터 상태
    -> ROLLBACK 된 DML 문장은 메모리 상의 Buffer에만 영향을 미치기 때문에 복구가 가능하다.
    -> 트랜잭션과 관련된 행의 잠금이 풀리게 된다.








[References]

profile
끄적끄적

0개의 댓글