정규화는 함수 종속성을 기반으로 했다면,
병행제어와 회복작업은 트랜잭션을 기반으로 한다.
트랜잭션(transaction)
- 하나의 작업을 수행하는데 필요한 데이터베이스 연산들을 모아놓은 것
- 작업 수행에 필요한 SQL 문들의 모임 (특히 INSERT, DELETE, UPDATE)
- 논리적 작업 단위
- 장애 발생 시 복구, 병행 제어 작업을 위한 중요한 단위로 사용됨
- 데이터베이스의 무결성과 일관성을 보장하기 위해서 작업 수행에 필요한 연산들을 하나의 트랜잭션으로 정의하고 관리해야함
- commit이 되어야 transaction이 끝난 것임
트랜잭션의 특성
-
원자성(atomicity)
-
트랜잭션의 연산들이 모두 정상적으로 실행되거나 하나도 실행되지 않아야하는 all or nothing 방식
-
트랜잭션 수행 도중 장애가 발생하면 지금까지 실행한 연산 처리를 모두 취소하고 데이터베이스를 트랜잭션 작업 전 상태로 되돌려야함
→ 원자성 보장을 위해서 장애 발생시 회복 기능이 필요함
-
일관성(consistency)
-
격리성, 고립성(isolation)
- 수행 중인 트랜잭션이 완료될 때까지 다른 트랜잭션들이 중간 연산 결과에 접근할 수 없다
- 격리성 보장을 위해서는 여러 트랜잭션이 동시에 수행되더라도 순서대로 하나씩 수행되는 것처럼 정확하고 일관된 결과를 얻을 수 있도록 제어하는 기능이 필요 → 병행 제어
-
지속성(durability)
- 트랜잭션이 성공적으로 완료된 후, 데이터베이스에 반영한 수행결과는 영구적이어야함
- 지속성의 보장을 위해서는 장애 발생시 회복 기능 필요