=> 여러 개의 작업들을 하나의 그룹으로 묶어서 처리하는 처리 단위.
ex) 커피 주문 시, 결제, 스탬프 적립, 주문 정보 데이터베이스 등록 필요
-> 여기서 결제 작업과 스탬프 적립 작업, 주문 정보 데이터베이스에 등록 작업을 하나의 그룹으로 묶어서 처리하는 것.
-> 이 중에서 어느 하나라도 처리에 실패할 경우, 애플리케이션의 신뢰성이 깨지는 상황 발생.
-> 애플리케이션의 신뢰성이 깨지는 상황이 발생하면 트랜잭션이라고 부를 수 없다.
트랜잭션의 처리 방식
트랜잭션을 처리할 땐 all or nothing으로, 전부 성공하든가 전부 실패해야 트랜잭션의 의미를 가진다.
=> 데이터의 무결성을 보장하는 핵심 역할.
트랜잭션의 특징
= 더 이상 쪼갤 수 없음.
-> 작업을 더 이상 쪼갤 수 없기 때문에 하나로 인식하여 All of Nothing이 가능
-> 즉, All or Nothing으로 모두 성공하든, 실패하든 둘 중 하나로 처리되는 것이 보장되어야 함.
= 트랜잭션이 에러 없이 성공적으로 종료될 시, 비지니스 로직에서 의도하는 대로 일관성 있게 저장되거나 변경되는 것.
ex) 3잔 커피 주문으로 스탬프 횟수 3 증가해야 함. -> 그러나, 3 이외의 숫자로 스탬프 값 증가
=> 일관성 위배.
= 여러 개의 트랜잭션이 실행될 경우 각각 독립적으로 실행되어야 함.
-> CPU가 여러가지 프로세스를 실행하는 것처럼 데이터베이스도 성능 향상을 목적으로 한 개 이상의 트랜잭션을 번갈아가며 처리할 수 있음 -> 이럴 경우, 각 트랜잭션이 다른 트랜잭션에 영향을 주지 않고 독립적으로 실행되어야 한다는 것이 격리성이다.
= 트랜잭션이 완료되면 그 결과는 지속되어야 한다.
-> 데이터베이스가 종료되더라도 데이터는 물리적인 저장소에 저장되어 지속적으로 유지되어야 한다는 의미.