트랜잭션 (Transaction)

허성재's avatar
Aug 21, 2024
트랜잭션 (Transaction)
"트랜잭션(Transaction)"은 데이터베이스 및 소프트웨어 개발에서 일련의 작업 단위를 하나의 논리적 작업으로 처리하는 것을 보장하는 메커니즘입니다. 트랜잭션은 모든 작업이 성공적으로 완료되거나, 그렇지 않으면 작업의 일부라도 실패할 경우 모든 변경 사항이 취소되어 시스템이 일관된 상태를 유지하도록 합니다.

트랜잭션의 4가지 속성 (ACID 원칙)

트랜잭션은 다음 네 가지 중요한 속성을 만족해야 합니다. 이를 ACID 원칙이라고 합니다.
  1. Atomicity (원자성):
      • 트랜잭션은 "모두 성공"하거나 "모두 실패"해야 합니다. 트랜잭션 내에서 수행된 작업은 하나의 단일 단위로 취급되며, 부분적으로 완료되면 안 됩니다. 만약 트랜잭션 중 오류가 발생하면 트랜잭션 내의 모든 변경 사항이 롤백(되돌림)되어 원래 상태로 복구됩니다.
  1. Consistency (일관성):
      • 트랜잭션이 완료된 후, 데이터베이스는 일관된 상태여야 합니다. 즉, 트랜잭션이 시작되기 전과 완료된 후의 데이터베이스 상태가 정해진 규칙(무결성 제약 조건 등)을 항상 만족해야 합니다. 트랜잭션 중에 데이터의 일관성이 깨지더라도, 트랜잭션이 끝난 후에는 데이터의 일관성이 보장됩니다.
  1. Isolation (고립성):
      • 동시에 실행되는 트랜잭션들이 서로의 작업에 영향을 미치지 않도록 고립된 상태를 유지해야 합니다. 하나의 트랜잭션이 수행 중일 때, 다른 트랜잭션은 그 트랜잭션의 중간 상태를 볼 수 없으며, 모든 트랜잭션은 독립적으로 실행된 것처럼 보장됩니다.
  1. Durability (지속성):
      • 트랜잭션이 성공적으로 완료되면, 그 결과는 영구적으로 저장되어야 하며 시스템 장애가 발생하더라도 그 결과는 손실되지 않아야 합니다. 즉, 트랜잭션이 커밋되면 해당 변경 사항은 영구히 기록되어야 합니다.

트랜잭션의 작업 단위

트랜잭션은 주로 데이터베이스에서 사용되며, 다음과 같은 작업을 포함할 수 있습니다:
  • 데이터 삽입: 새로운 데이터를 테이블에 삽입합니다.
  • 데이터 업데이트: 기존 데이터를 수정합니다.
  • 데이터 삭제: 테이블에서 데이터를 삭제합니다.
  • 데이터 조회: 데이터를 조회하는 작업은 트랜잭션에 포함될 수 있으나, 일반적으로는 데이터 변경 작업이 트랜잭션의 핵심입니다.

트랜잭션 관리

트랜잭션을 관리하기 위해 주로 다음과 같은 명령을 사용합니다:
  • BEGIN: 트랜잭션을 시작합니다.
  • COMMIT: 트랜잭션이 성공적으로 완료되었음을 나타내며, 모든 변경 사항을 영구적으로 반영합니다.
  • ROLLBACK: 트랜잭션이 실패했음을 나타내며, 트랜잭션 내에서 수행된 모든 작업을 취소하고, 데이터베이스를 트랜잭션 시작 전의 상태로 되돌립니다.

트랜잭션의 예

BEGIN; UPDATE accounts SET balance = balance - 100 WHERE account_id = 1; UPDATE accounts SET balance = balance + 100 WHERE account_id = 2; COMMIT;
이 예제에서는 두 계좌 간의 자금 이체를 처리하는 트랜잭션입니다. 첫 번째 UPDATE 문에서 자금이 출금되고, 두 번째 UPDATE 문에서 다른 계좌로 자금이 입금됩니다. 만약 어느 한 단계에서 오류가 발생하면 ROLLBACK을 수행하여 모든 작업이 취소되고, 자금은 이체되지 않은 상태로 남게 됩니다.

트랜잭션의 중요성

트랜잭션은 특히 금융 애플리케이션이나 전자 상거래 시스템과 같은 중요한 시스템에서 필수적입니다. 이러한 시스템에서 데이터 일관성, 무결성, 그리고 신뢰성을 유지하는 것이 매우 중요하기 때문입니다.
  • 데이터 일관성: 트랜잭션을 사용하면 데이터베이스의 무결성을 유지할 수 있습니다.
  • 에러 처리: 작업 중 문제가 발생했을 때 트랜잭션을 통해 전체 작업을 취소할 수 있습니다.
  • 복구성: 시스템 장애나 오류가 발생한 후에도 트랜잭션을 통해 데이터의 안정성을 보장할 수 있습니다.

결론

트랜잭션은 데이터베이스와 같은 영구 저장소에서 데이터 무결성과 일관성을 유지하는 데 매우 중요한 개념입니다. ACID 속성을 통해 트랜잭션은 모든 작업이 안전하고 신뢰할 수 있는 방식으로 수행되도록 보장하며, 오류가 발생할 경우 데이터 손상을 방지합니다.
Share article

heo-gom