SQL

트랜잭션의 4가지 특징

euicheol0910 2025. 5. 12. 11:01

 

트랜잭션(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