항해 45일차
데이터베이스의 상태를 변경시킨다는 이야기는 SELECT, UPDATE, INSERT, DELETE 와 같은 행동
이런 트랜잭션은 상황에 따라 여러 개가 만들어질 수 있다.
그 하나의 트랜잭션은 Commit (저장) 되거나 Rollback (철회)될 수 있다.
예로 리뷰를 작성하면 포인트를 받는다고 가정해보자.
A,B,C,D가 각각 리뷰를 작성하면 1,000포인트를 지급 해야하고 이를 DB에 저장해야한다.
그런데 A,B,C는 정상적으로 저장이 되었고 D는 저장에 실패했다. 이런 상황은 잘못된 처리이므로 다시 저장을 수행해야 하는데 A,B,C는 이미 저장이 완료되었기에 다시 저장을 하면 2,000포인트가 저장이 된다.
이런 문제점들을 위해서 트랜잭션은 Commit과 Rollback을 이용한다.
트랜잭션에는 4가지의 특징이 존재한다.
하나의 트랜잭션이 성공적으로 끝나서 데이터베이스가 일관성있는 상태에 있음을 의미한다.
트랜잭션의 원자성이 깨질 때, 즉 하나의 트랜잭션 처리가 비정상적으로 종료 되었을 때의 상태를 뜻한다.
Rollback 이 이뤄진다면 트랜잭션을 다시 실행하거나 부분적으로 변경된 결과를 취소할 수 있다.
트랜잭션은 논리적으로 5가지의 상태에 있을 수 있다.
Active
트랜잭션이 현재 실행 중인 상태
Failed
트랜잭이 실행되다 오류가 발생해서 중단된 상태
Aborted
브랜잭션이 비정상 종료되어 Rollback 이 수행된 상태
Partially Committed
트랜잭션의 연산이 마지막까지 실행되고 Commit이 되기 직전 상태
Committed
트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태