트랜잭션(Transaction)과 트랜잭션의 특성(ACID)
학습조직을 진행하던 중, DB isolation level에 대해 알게 되었다. 하지만 DB isolation level에 대해 공부하기 전에!! ✔트랜잭션에 대해 명확히 알고자 정리해보았다.
1. 트랜잭션이란?
-
트랜잭션(Transaction)이란, 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 뜻한다.
- 작업단위: 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미한다.
-
트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다.
-
하나의 트랜잭션은
Commit
되거나Rollback
된다.Commit
: 하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성있는 상태에 있을 때, 트랜잭션이 종료됨을 알려주기위해 사용하는 연산- 수행했던 트랜잭션이 로그에 영구저장
Rollback
: 하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진경우, 트랜잭션을 처음부터 다시 시작하거나, 트랜잭션의 부분적으로만 연산된 결과를 다시 취소시키는 연산이다.- 이전 Commit한 곳까지만 복구한다.
2. 트랜잭션의 특성(ACID)
-
원자성 (Atomicity)
- 트랜잭션은 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다
- 부분적으로 실행되다가 중단되지 않는 것을 보장하는 것
-
일관성 (Consistency)
- 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지해야 한다.
-
독립성 (Isolation)
- 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다.
- 하나의 특정 트랜잭션이 완료될때까지, 다른 트랜잭션이 특정 트랜잭션의 결과를 참조할 수 없다.
-
지속성 (Durability)
- 트랜잭션이 성공적으로 완료됬을 경우, 결과는 영구적으로 반영되어야 한다는 점이다.