DB내에서 수행되는 작업의 최소 단위
DB의 무결성을 유지하며 DB의 상태를 변화시키는 기능을 수행한다.
transaction은 하나 이상의 query를 포함해야 하고, ACID(원자성, 일관성, 고립성, 지속성)의 4가지 규칙을 만족해야 한다.
- Atomicity(원자성) : transaction에 포함된 작업은 전부 수행되거나, 전부 수행되지 말아야 한다. (All or Nothing)
- Consistency(일관성) : tansaction실행을 성공적으로 완료하면 언제나 일관성 있는 DB상태로 유지한다.
- Isolation(고립성) : 각 transaction은 독립적으로 작업을 수행한다.(동시성 제어)
- Durability(지속성) : 성공적으로 수행된 transaction은 DB에 영원히 반영되어야 한다.
동시성 제어
transaction이 한개의 data를 동시에 update할때 충돌로 인한 갱신 손실 발생
-> 방지를 위해 Lock을 건다.
Commit 과 Rollback
DB는 Commit과 Rollback 명령어를 통해 데이터 무결성을 보장
- Commit : transaction 작업을 완료했다고 확정하는 명령어. DB에 저장하고, DB가 변경됨
- Rollback : 작업 중 문제가 발생했을 때, 변경 사항을 취소, 이전 Commit 상태로 되돌림
DeadLock
DB에서 deadlock이란 여러 transaction들이 각각 자신의 데이터에 대하여 lock을 획득한 상태에서 상대방 데이터에 대하여 접근하조가 대기를 할때 교차 대기를 하게 되면서 영원히기다리는 상태를 말한다.
해결방법
- 예방 기법 : 모든 데이터를 미리 locking
- 회피 기법 : time stamp를 사용
- 탐지/ 회복 기법