트랜잭션(Transaction)은 데이터베이스에서 하나 이상의 관련된 작업을 묶은 단위입니다. 트랜잭션은 데이터의 일관성과 무결성을 유지하기 위해 사용되며, 다음과 같은 네 가지 속성(ACID)을 만족해야 합니다.
ACID 속성
원자성(Atomicity): 트랜잭션 내의 모든 작업이 완전히 수행되거나, 아무 것도 수행되지 않아야 합니다. 즉, 중간 단계에서 실패하면 모든 변경사항이 롤백(되돌림)됩니다.
일관성(Consistency): 트랜잭션이 성공적으로 완료된 후에는 데이터베이스가 일관된 상태를 유지해야 합니다.
독립성(Isolation): 동시에 여러 트랜잭션이 실행되더라도, 각 트랜잭션은 서로에게 영향을 주지 않아야 합니다.
지속성(Durability): 트랜잭션이 성공적으로 완료된 후에는 그 결과가 영구적으로 데이터베이스에 저장되어야 합니다.
트랜잭션의 생명 주기
시작(Start): 트랜잭션의 시작을 선언합니다.
실행(Execute): 여러 데이터베이스 연산(INSERT, UPDATE, DELETE 등)을 수행합니다.
검증(Validation): 모든 연산이 문제없이 완료되었는지 확인합니다.
커밋(Commit) 또는 롤백(Rollback):
커밋: 모든 연산이 성공적이면, 변경사항을 데이터베이스에 반영합니다.
롤백: 연산 중 하나라도 실패하면, 트랜잭션 시작 이전 상태로 되돌립니다.
예시
예를 들어, 은행 계좌 간의 이체 작업을 생각해보면, 이체는 두 개의 작업으로 구성됩니다.
송금자 계좌에서 금액을 차감
수신자 계좌에 금액을 입금
이 두 작업은 하나의 트랜잭션으로 묶여야 합니다. 만약 하나의 작업만 성공하고 다른 작업이 실패한다면, 데이터의 일관성이 깨질 것입니다. 따라서 두 작업이 모두 성공해야 트랜잭션이 커밋되고, 하나라도 실패하면 롤백되어야 합니다.
이렇게 트랜잭션을 사용하면 여러 작업을 안전하고 일관성 있게 처리할 수 있습니다