트랜잭션(Transaction)은 데이터베이스 관리 시스템(DBMS)이나 애플리케이션에서 하나의 논리적 작업 단위를 구성하는 연산의 집합을 의미한다. 영문 'Transaction'의 본래 뜻은 '거래'로서, 금융 시스템에서 하나의 거래가 여러 단계로 이루어지는 데서 유래하여 컴퓨터 과학 분야에 도입된 용어이다.
트랜잭션은 주로 여러 개의 데이터베이스 연산(삽입, 갱신, 삭제, 조회 등)을 하나의 그룹으로 묶어, 이 그룹 내의 모든 연산이 성공적으로 완료되거나(Commit) 아니면 하나라도 실패할 경우 전체가 원래 상태로 되돌려지는(Rollback) 방식으로 동작한다.
트랜잭션의 핵심 특징은 ACID 속성으로 요약된다.
- 원자성(Atomicity): 트랜잭션 내의 모든 연산은 전부 성공하거나 전부 실패해야 하며, 중간 상태에서 멈출 수 없다.
- 일관성(Consistency): 트랜잭션이 실행되기 전과 후의 데이터베이스 상태는 일관된 무결성 제약 조건을 만족해야 한다.
- 고립성(Isolation): 여러 트랜잭션이 동시에 실행될 경우, 각 트랜잭션은 서로의 중간 연산 결과에 간섭할 수 없으며 마치 순차적으로 실행된 것과 같은 결과를 보장해야 한다.
- 지속성(Durability): 트랜잭션이 성공적으로 완료(Commit)된 후에는 시스템 장애가 발생하더라도 그 결과가 영구적으로 반영되어야 한다.
트랜잭션의 전형적인 예시로 은행 계좌 이체가 자주 인용된다. A 계좌에서 금액을 출금하고 B 계좌에 동일 금액을 입금하는 두 연산은 하나의 트랜잭션으로 묶이며, 어느 한쪽만 실행되고 다른 쪽이 실패하는 상황이 발생하지 않도록 보장한다. 이 외에도 전자상거래에서 주문 정보 저장, 결제 처리, 재고 감소 등이 하나의 트랜잭션으로 처리된다.
트랜잭션은 데이터베이스 시스템 설계와 소프트웨어 공학에서 데이터 무결성과 일관성을 유지하기 위한 핵심 개념으로 자리잡고 있으며, 다양한 프로그래밍 프레임워크(예: Spring Framework의 @Transactional)에서 선언적 트랜잭션 관리를 지원하고 있다.