데이터베이스의 상태를 변화 시키기 해서 수행하는 작업 단위이다.
데이터베이스의 상태를 변환시킨다? 이건 무슨뜻일까?
->질의어를 이용해 데이터베이스에 접근하는것을 의미한다.
근데 작업단위란 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미하기에 한문장이 아니다.
그래서 게시판을 예를 들면, 사용자가 한 게시물을 올렸을때, 그 목록들을 보면 사용자가 올린 게시물도 올라가있는 최신 정보로 올라가있다.
-> 이건 insert,select문 둘다를 합친것이 하나의 작업 단위인것이다.
하나의 트랜잭션이라고 한다.
데이터베이스 트랜잭션이 안전하게 수행되는 것을 보장하기 위한 성질 : ACID
1. Atomicity : 원자성
2. Consistency : 일관성
3. Isolation : 독립성
4. Durability: 지속성
트랜잭션이 DB에 모두 반영되거나, 전혀 반영되지 않거나 둘중 하나을 뜻한다
(All or Nothing)
트랜잭션 작업 처리의 결과가 항상 일관되어야한다.를 뜻한다.
데이터 타입이 잔환후와 전이 무조건 항상 동일해야한다.
무결성 제약이 모든 계좌는 잔고가 있어야 한다면 이를 위반하는 트랜잭션은 중단된다.
트랜잭션을 수행시 다른 트랜잭션의 연산 작업이 끼어들지 못하게 보장하는 것으로 의미한다.
서로 간섭을 못한다. 성능 관련해서 이특성이 가장 유연성 있는 제약 조건이다.
성공적으로 수행된 트랜잭션은 영구적으로 반영되어야 함을 의미한다.
전형적으로 모든 트랜잭션은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있다.
commit
하나의 트랜잭션이 끝나고, 데이터베이스가 일관성 있을때 하나의 트랜잭션이 끝났다고 알려주기 위해 사용하는 연산이다.
commit을 쓰면 수행했던 트랜잭션이 로그에 저장된다.
Rollback
트랜잭션 하나를 처리가 비정상적으로 작동되서 원자성이 깨진경우, 트랜잭션을 처음부터 다시 시작하거나 트랜잭션의 조금 처리 됐던 결과를 다시 취소시킨다.