WIPIVERSE

트랜잭션 롤백

정의
트랜잭션 롤백(Transaction rollback)은 데이터베이스 관리 시스템(DBMS)에서 수행되는 작업으로, 현재 진행 중인 트랜잭션(거래) 내에서 이루어진 모든 변경 사항을 취소하고, 트랜잭션 시작 이전의 상태로 되돌리는 과정을 말한다. 롤백이 이루어지면 해당 트랜잭션은 원래대로 복구되며, 변경된 데이터는 영구적으로 반영되지 않는다.

주요 특징

특징 설명
원자성 보장 트랜잭션은 “전체 성공 혹은 전체 실패”라는 원자성을 갖는다. 롤백은 트랜잭션이 실패했을 때 전체를 취소함으로써 원자성을 유지한다.
일관성 유지 롤백을 통해 데이터베이스는 사전에 정의된 일관성 규칙(제약 조건 등)을 위배하지 않도록 보장한다.
격리성 다른 트랜잭션이 진행 중인 작업에 영향을 주지 않도록, 롤백은 해당 트랜잭션 내에서만 적용된다.
내구성 롤백이 수행된 이후에는 복구 로그에 기록된 내용이 반영되지 않으므로, 영구적인 저장소에 변경 사항이 남지 않는다.

동작 메커니즘

  1. 트랜잭션 시작BEGIN TRANSACTION 혹은 START TRANSACTION 명령으로 트랜잭션이 시작된다.
  2. 작업 수행 – INSERT, UPDATE, DELETE 등 데이터 변경 작업이 수행된다.
  3. 예외 발생 – 제약 위반, 시스템 오류, 사용자에 의한 취소 등으로 트랜잭션이 정상적으로 완료되지 못한다.
  4. 롤백 명령ROLLBACK 명령이 실행되어, 트랜잭션이 시작된 시점으로 복구된다.
  5. 복구 로그 활용 – 대부분의 DBMS는 Write-Ahead Logging(WAL) 등을 이용해 변경 전의 상태를 로그에 기록한다. 롤백 시 이 로그를 역순으로 적용해 원래 상태를 복원한다.

사용 예시 (SQL)

BEGIN TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

-- 예시: 잔액이 부족한 경우
IF (SELECT balance FROM accounts WHERE id = 1) < 0 THEN
    ROLLBACK;
ELSE
    COMMIT;
END IF;

위 예시에서 첫 번째 계좌의 잔액이 부족하면 ROLLBACK이 실행되어 두 UPDATE 문이 모두 취소된다. 반대로 조건이 만족되면 COMMIT이 수행되어 변경 내용이 영구 저장된다.

관련 개념

  • COMMIT: 트랜잭션의 모든 변경을 영구적으로 적용하는 명령. 롤백과 대조되는 개념.
  • SAVEPOINT: 트랜잭션 내에서 중간 지점을 지정하여, 전체 롤백 대신 지정 지점까지 부분 롤백이 가능하도록 하는 기능.
  • 자동 롤백(autonomous rollback): 일부 DBMS에서는 오류 발생 시 자동으로 롤백을 수행하도록 설정할 수 있다.

응용 분야

  • 금융 시스템: 계좌 이체 등 원자성이 필수적인 작업에서 오류 시 손실 방지를 위해 필수적으로 사용됨.
  • 전자상거래: 주문 프로세스 중 재고 감소, 결제 처리 등 여러 단계가 하나의 트랜잭션으로 묶여, 어느 단계에서든 문제가 발생하면 전체를 롤백한다.
  • 배치 처리: 대량 데이터 업데이트 시 중간에 오류가 발생하면 전체 배치를 롤백하여 일관성을 유지한다.

주요 DBMS에서의 지원

DBMS 롤백 명령 추가 기능
Oracle ROLLBACK SAVEPOINT, Autonomous Transaction
Microsoft SQL Server ROLLBACK TRANSACTION TRY…CATCH 구문과 결합한 오류 처리
MySQL ROLLBACK InnoDB 엔진에서 완전 지원
PostgreSQL ROLLBACK SAVEPOINT, 트랜잭션 블록을 위한 BEGIN … END
DB2 ROLLBACK 오류 진단 표준 제공

요약
트랜잭션 롤백은 데이터베이스 시스템이 ACID 원칙 중 원자성, 일관성, 격리성, 내구성을 보장하기 위해 사용하는 핵심 메커니즘이다. 트랜잭션 과정에서 오류가 발생하거나 사용자가 의도적으로 취소할 경우, 롤백을 통해 모든 변경을 원래 상태로 복원함으로써 시스템 전체의 데이터 무결성을 유지한다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기