트랜잭션(Transaction)이란?
- 데이터베이스의 상태를 변화(CRUD) 시키기 해서 수행하는 하나의 작업 단위
- 작업의 완전성 보장
- 논리적인 작업 셋을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어준다.
트랜잭션(Transaction) 예시
- ex) ATM으로 계좌 이체를 한다.
- A은행에서 5000원을 출금하여 B은행으로 송금하려고 한다.
- 송금 중, 알 수 없는 오류가 발생하여 A은행 계좌에서 5000원은 빠져 나갔지만 B은행의 계좌에 5000원이 입금되지 않았다.
- 이와 같은 상황을 막기 위해 거래가 성공적으로 모두 끝나야 이를 완전한 거래로 승인하고, 거래 도중 뭔가 오류가 발생했을 때는 이 거래를 처음부터 없었던 거래로 완전히 되돌린다.
- 이렇게 트랜잭션은 작업의 완전성을 보장해준다.
트랜잭션(Transaction)의 특징 (ACID)
- 원자성(Automicity)
- 원자성은 트랜잭션이 DB에 모두 반영되거나, 전혀 반영되지 않거나를 뜻한다.
- All or Nothing을 생각하면 된다.
- 일관성(Consistency)
- 일관성은 트랜잭션 작업 처리의 결과가 항상 일관되어야 한다를 뜻한다.
- 즉, 데이터 타입이 반환 후와 전이 항상 동일해야 한다.
- 독립성(Isolation) or 격리성
- 독립성은 하나의 트랜잭션은 다른 트랜잭션에 끼어들 수 없고 마찬가지로 독립적임을 의미한다.
- 즉, 각각의 트랜잭션은 독립적이라 서로 간섭이 불가능하다.
- 지속성(Durability)
- 지속성은 트랜잭션이 성공적으로 완료되면 영구적으로 결과에 반영되어야 함을 뜻한다.
- 보통 commit 이 된다면 지속성은 만족할 수 있다.
트랜잭션(Transaction)의 Commit 과 Rollback 연산
Commit
- 하나의 트랜잭션이 성공적으로 끝나서 데이터베이스에 정상 반영하는 것
Rollback
- 트랜잭션의 원자성이 깨진 경우, 즉 하나의 트랜잭션 처리가 비정상적으로 종료 되었을 때의 상태에 트랜잭션을 다시 시작하거나 부분적으로만 변경된 결과를 되돌리는 것
트랜잭션(Transaction)의 상태