Transaction
= DB 연산의 sequence
start transaction
으로 시작해서 commit
으로 끝낼 수 있다.
- 그냥 update, select 라고 적어도 된다. (각각이 모두 트랜직션)
- read ,write 외에는 크게 관심없다.
Transaction 관리
- 시스템(H.W, S.W) 장애로 인한 Transaction 실패 처리 →
recovery
- 다수의 Transaction을 동시에 실행할 때 동시성 제어 기술 →
concurrency
트랜직션이 가지고 있는 properties (ACID)
- Atomicity 원자성
- all or nothing : 모든 작업이 DB에 반영되거나, 전혀 반영되지 않아야된다.
- 만약 실행중간에 실패했다면 하나하나 찾아서 처음으로 돌려 놓아야 한다
- Consistency 일치성
- 트랜잭션을 독립적으로 실행할 경우 데이터베이스의 일관성을 유지해야 합니다.
- 단일 트랜잭션의 실행 전후에 데이터 무결성을 유지한다.
- 따라서 트랜잭션 실행중에는 무결성제약을 만족하지 않을수도 있다.
- Isolation 고립성
- 여러 트랜잭션이 동시에 실행되더라도, 각 트랜잭션은 다른 트랜잭션의 존재를 인지하지 않아야 하며 각 트랜잭션의 중간 결과는 다른 트랜잭션에게 보이지 않아야 합니다.
- 한 사용자가 끝나기**(commit) 전까지** 다른 사용자에게 보이지 않는다.
- Durability 지속성
- 트랜잭션이 잘 끝났다면 시스템이 망가진다고 해도 데이터 베이스에는 적용되야한다.
트랜잭션을 직렬 실행(serial execution, 각각을 처음부터 끝까지 실행 → voerlapping 이 없는 수행방식 : 고립성자연스럽게 제공) → 실제적으로 불가능
Transaction State

Active (수행 상태)
- 트랜잭션이 실행되고 있는 상태입니다. 이 단계에서는 트랜잭션의 각 명령문이 순차적으로 실행되며, 아직 완료되지 않은 상태입니다.
- 문제가 발생하지 않으면 계속해서 명령문을 처리합니다.
Partially Committed (부분 완료 상태)
- 트랜잭션의 모든 명령문이 실행된 후, 아직 최종적으로 커밋되지 않은 상태입니다. 데이터베이스에 완전하게 반영되기 전의 상태를 의미합니다.
Committed (완료 상태)
- 성공적으로 완료된 상태입니다. 트랜잭션이 데이터베이스에 영구적으로 반영되어, 다른 트랜잭션이 이 변경 사항을 볼 수 있게 됩니다.