27 lines
1.7 KiB
Markdown
27 lines
1.7 KiB
Markdown
---
|
|
id: ACID 20260420
|
|
created: 2026-04-20 08:44
|
|
tags:
|
|
aliases:
|
|
---
|
|
|
|
---
|
|
## 📑 개념
|
|
DB에서 하나의 논리적 작업 단위를 '트랜잭션'이라고 합니다. RDBMS는 이 트랜잭션이 안전하게 처리됨을 보장하기 위해 ACID 특성을 가집니다.
|
|
## 📌 상세
|
|
- **Atomicity (원자성):** 전부 성공하거나, 전부 실패하거나. - "All or Nothing"
|
|
트랜잭션 내의 모든 연산은 반드시 한꺼번에 완료되어야 하며, 그렇지 못할 경우 모두 취소되어야 합니다.
|
|
**예:** 계좌 이체 시 '내 계좌 출금'은 성공했는데 '상대 계좌 입금'에서 오류가 나면, 내 계좌의 출금 내역도 취소되어야 합니다.
|
|
|
|
- **Consistency (일관성):** 완료 후 DB 상태가 규칙을 위반하지 않음.
|
|
트랜잭션 수행 전후의 데이터베이스 상태는 항상 논리적으로 올바른 상태여야 합니다.
|
|
**예:** 모든 계좌의 잔액은 0원 이상이어야 한다는 제약 조건이 있다면, 트랜잭션 후 잔액이 마이너스가 되는 결과는 허용되지 않습니다.
|
|
|
|
- **Isolation (고립성):** 동시에 실행되는 트랜잭션들이 서로 방해하지 않음.
|
|
동시에 여러 트랜잭션이 실행될 때, 각 트랜잭션은 서로의 작업에 간섭할 수 없습니다. 하나의 트랜잭션이 끝나기 전까지는 다른 트랜잭션에서 그 중간 결과를 볼 수 없습니다.
|
|
|
|
- **Durability (지속성):** 성공한 결과는 영구적으로 저장됨.
|
|
성공적으로 완료된 트랜잭션의 결과는 시스템 장애가 발생하더라도 영구적으로 기록되어야 합니다. 로그 파일 등을 통해 복구가 가능한 상태를 말합니다.
|
|
|
|
---
|