트랜잭션의 성질(ACID)
설명 영상 트랜잭션의 성질(ACID) · 2:13
핵심 정리
트랜잭션은 데이터베이스에서 데이터에 대해 수행하는 하나의 논리적 실행 단계이다. 계좌이체에서는 송신자 계좌의 금액 감소와 수신자 계좌의 금액 증가가 하나의 동작으로 이루어져야 하므로, 계좌이체가 트랜잭션의 전형적인 예가 된다. ACID는 트랜잭션이 안전하게 수행되도록 보장하는 성질을 가리키는 약어이며, 원자성·일관성·독립성·지속성으로 이루어진다.
원자성은 트랜잭션의 작업이 전부 수행되거나 전혀 수행되지 않는 성질이다. 자금 이체에서 출금만 성공하고 입금은 실패하는 상태를 막는 것이 원자성의 핵심이다. 일관성은 트랜잭션 처리 전후에 데이터의 모순이 없는 상태를 유지하는 성질이다. 일관성은 무결성 규칙을 지키는 성질이며, 처리 전후 모순 없음으로 정리할 수 있다.
독립성은 동시에 실행되는 트랜잭션이 서로 영향을 주지 않도록 하는 성질이다. 지속성은 완료된 트랜잭션의 결과가 장애 이후에도 남아 있어야 하는 성질이다. 네 성질은 장애와 동시 실행이라는 두 상황에서 데이터베이스의 올바른 상태를 지키는 장치다.
ACID는 관계형 데이터베이스의 트랜잭션 처리를 설명하는 틀이며, NoSQL은 관계형 데이터베이스보다 ACID 특성을 완전히 지원하지 않는 경우가 많다. 의존성은 트랜잭션의 ACID 성질에 속하지 않는다.
자세히
원자성과 전무 원칙
원자성은 모두 아니면 전무라는 의미로 이해한다. 커밋된 트랜잭션은 외부에서 볼 때 나눌 수 없는 작업으로 보이고, 중단된 트랜잭션은 데이터베이스에 전혀 영향을 주지 않는다. 따라서 중간 단계까지 실행된 뒤 실패해 일부 작업만 남는 상태는 허용되지 않는다. 원자성은 작업이 일부만 반영되는 것을 막는 성질이고, 데이터 값이 규칙에 맞는지를 따지는 일관성과 구별해야 한다.
| 성질 | 보장하는 것 | 예 |
|---|---|---|
| 원자성 | 전부 수행되거나 전혀 수행되지 않음 | 출금만 되고 입금이 빠지지 않음 |
| 일관성 | 처리 전후 데이터 모순 없음 | 무결성 제약을 위반한 트랜잭션은 중단 |
| 독립성 | 동시 실행 트랜잭션 간 영향 차단 | 동시 이체가 서로 간섭하지 않음 |
| 지속성 | 완료된 결과가 장애 후에도 유지 | 완료된 이체 결과가 장애 후에도 남음 |
이어지는 내용
- 범위와 한계
- 일관성과 제약 준수
- 독립성과 동시성 제어
- 자주 헷갈리는 것
- 기출에서는
로그인하면 하루 5페이지까지 무료로 전체를 읽을 수 있습니다.
앱에서 이 절 읽기