트랜잭션?
데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 뜻한다.
트랜잭션의 특징
- 원자성 (Atomicity)
- 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다.
→
트랜잭션은 사람이 설계한 논리적인 작업 단위이며,
일처리가 작업단위 별로 이루어 져야 사람이 다루는데 무리가 없다.
만약 트랜잭션 단위로 데이터가 처리되지 않는다면,
설계한 사람은 데이터 처리 시스템을 이해하기 힘들고 오작동 시 원인을 찾기가 힘들어진다.
- 일관성 (Consistency)
- 트랜잭션의 작업 처리 결과가 항상 일관성 있어야 한다.
→
트랜잭션이 진행되는 동안에 데이터베이스가 변경 되더라도
업데이트된 데이터베이스로 트랜잭션이 진행되는 것이 아니라,
처음 트랜잭션을 진행하기 위해 참조한 데이터베이스로 진행된다.
따라서 각 사용자는 일관성있는 데이터를 볼 수 있음.
- 독립성 (Isolation)
- 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우, 어떤 트랜잭션이라도 다른 트랜잭션의 연산에 끼어들 수 없다.
→
하나의 특정 트랜잭션이 완료될 때까지,
다른 트랜잭션이 특정 트랜잭션의 결과를 참조할 수 없다.
- 지속성 (Durability)
- 트랜잭션이 성공적으로 완료됐을 경우, 결과는 영구적으로 반영되어야 한다.
Commit
- 하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성있는 상태에 있을 때,
하나의 트랜잭션이 끝났다라는 것을 알려주기 위해 사용하는 연산
- 수행했던 트랜잭션이 로그에 저장되며, 후에 수행한 트랜잭션 단위로 Rollback하는 것을 도와준다.