트랜잭션(Transaction)은 데이터베이스에서 하나의 논리적인 작업 단위로, 여러 작업이 하나처럼 처리되어야 할 때 사용됩니다. 트랜잭션은 데이터의 무결성과 일관성을 보장하기 위해 아래의 ACID라는 4가지 특징을 갖습니다.
1. Atomicity (원자성)
예시: A가 B에게 10만 원을 이체함. A의 계좌에서 10만 원을 빼고 B의 계좌에 10만 원을 더해야 함
만약 A의 돈은 빠졌는데, 네트워크 오류로 B의 계좌에 돈이 들어가지 않았다면?
원자성이 보장되면, **A의 계좌에서도 출금이 취소(rollback)**되어 처음 상태로 복원됨.
🔹 2. Consistency (일관성)
예시: 은행 전체 계좌의 총 잔액이 1000만 원이었다고 할 때,
A가 B에게 10만 원을 이체하더라도
이체 후 전체 총액은 여전히 1000만 원이어야 함
🔹 3. Isolation (격리성)
예시: A가 B에게 이체하는 중이고, 동시에 A가 ATM에서 잔액 조회를 한다고 가정
격리성이 보장되면, ATM은 이체가 끝나기 전까지는 이전 상태의 잔액만 조회함.
중간 상태(예: A의 돈은 빠졌지만 B의 돈은 아직 안 들어간 상태)를 볼 수 없어야 함.
🔹 4. Durability (지속성)
예시: A가 B에게 돈을 성공적으로 이체했는데,
바로 그 직후 서버가 꺼져도 다시 켜보면 이체 결과는 정상적으로 반영되어 있어야 함
- 이는 보통 데이터베이스가 디스크에 기록하거나 로그를 남겨서 보장합니다
- 트랜잭션 완료 후 데이터는 영구적으로 유지되어야 함
- 동시에 여러 트랜잭션이 일어나도 서로 간섭하면 안 됨
- 중간 계산이 틀려서 전체 잔액이 달라지면 일관성이 깨진 것입니다.
- 트랜잭션 전후 데이터 상태가 일관되어야 함
- 모두 성공하거나 모두 실패해야 함
'SQL' 카테고리의 다른 글
| SQL 명령문의 실행순서 (2) | 2025.05.12 |
|---|---|
| RDBMS (1) | 2025.05.09 |
| 데이터베이스에서 다양한 유형의 관계 (0) | 2025.05.08 |
| JOIN이란? 그리고 'INNER JOIN'과 'LEFT JOIN'의 차이점 (2) | 2025.05.07 |
| 정규화에 대하여 (4) | 2025.05.01 |