CS/데이터베이스

[데이터베이스] Commit과 Rollback

Heeyeon Choi 2024. 10. 31. 22:07
728x90
데이터베이스에서 트랜잭션을 제어하는 명령어로, 트랜잭션의 상태를 최종 확정하거나 취소하는 역할

 

1. Commit

  • 개념: 트랜잭션이 성공적으로 완료된 후, 데이터베이스에 변경 사항을 영구적으로 반영하는 명령어입니다.
  • 특징:
    • Commit을 실행하면 트랜잭션 내에서 이루어진 모든 변경 사항이 데이터베이스에 저장됩니다.
    • Commit 이후에는 데이터가 확정되어 Rollback으로 되돌릴 수 없습니다.
    • 주로 트랜잭션이 성공적으로 완료되었을 때 사용하며, 다른 사용자도 Commit된 데이터를 조회할 수 있게 됩니다.
  • 예시:
     
     
    위 예제에서는 새로운 직원을 추가하고, 급여를 갱신한 후 Commit을 실행하여 데이터베이스에 변경 사항을 확정합니다.
BEGIN; 
INSERT INTO 직원 (이름, 나이, 부서ID) 
VALUES ('홍길동', 30, 1); 
UPDATE 직원 
SET 급여 = 급여 * 1.1 
WHERE 부서ID = 1; 
COMMIT;

2. Rollback

  • 개념: 트랜잭션 내에서 발생한 모든 변경 사항을 취소하고 원래 상태로 되돌리는 명령어입니다.
  • 특징:
    • Rollback을 실행하면 해당 트랜잭션에서 수행된 모든 작업이 무효화되어 데이터베이스가 이전 상태로 돌아갑니다.
    • Commit되지 않은 상태에서만 사용할 수 있으며, 트랜잭션 중 오류가 발생하거나 작업을 취소할 필요가 있을 때 사용합니다.
    • Rollback을 통해 데이터 무결성을 유지하고, 예상하지 못한 데이터 변경을 방지할 수 있습니다.
  • 예시:
     
     
    이 경우 Rollback을 실행하면 새로운 직원 추가와 급여 갱신 작업이 취소되어 데이터베이스는 원래 상태로 돌아갑니다.
BEGIN;
INSERT INTO 직원 (이름, 나이, 부서ID) VALUES ('홍길동', 30, 1);
UPDATE 직원 SET 급여 = 급여 * 1.1 WHERE 부서ID = 1;
ROLLBACK;

Commit과 Rollback의 차이점

Commit/Rollback

역할 트랜잭션의 변경 사항을 영구적으로 반영 트랜잭션의 변경 사항을 취소하고 원래 상태로 복구
변경 반영 데이터베이스에 확정되어 다른 사용자에게 반영됨 변경 사항이 취소되며, 데이터는 초기 상태로 복구
재실행 가능 여부 되돌릴 수 없으며, Rollback 불가 Commit 전이라면 언제든지 실행 가능
사용 시기 트랜잭션이 성공적으로 완료된 후 트랜잭션 오류 발생 시 또는 작업을 취소할 때

Commit과 Rollback의 사용 예시

  1. Commit 사용 예시
    • 은행 거래 시스템에서 계좌 간 자금 이체가 성공적으로 완료된 후, 트랜잭션을 Commit하여 이체 내용을 영구적으로 반영합니다.
  2. Rollback 사용 예시
    • 계좌 이체 중 오류가 발생하거나 계좌 잔액이 부족한 경우, Rollback을 사용하여 이체 작업을 취소하고 트랜잭션 시작 전 상태로 복구합니다.
728x90