Computer Science/💾Database
[Database] ACID
seungwookim
2021. 11. 28. 15:57
Transaction
- 여러 작업(query)들을 하나로 묶은, 한번에 수행되어야 하는 단위이다.
ACID란
ACID는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 특징들을 의미한다.
Atomicity(원자성), Consistency(일관성), Isolation(고립성), Durability(지속성)의 약자아다.
Atomicity
- 트랜잭션이 분해가 불가능한 최소 단위로서 원자처럼 동작하는 것을 뜻한다.
- All or nothing
- 반드시 전부 수행되거나 아예 수행되지 않는다(Rollback).
- 보장
- 수행하고 있는 트랜잭션에 의해 변경된 내역을 유지하면서, 이전에 commit된 상태를 임시 영역에 따로 저장함으로써 보장한다.
Consistency
- 데이터는 이미 정해진 규칙 내에서만 수정이 가능하다.
- 트랜잭션이 성공적으로 완료되면 일관적인 DB상태를 유지한다.
- 보장
- 트랜잭션 수행 전, 후에 데이터 모델의 모든 제약 조건(기본키, 외래키, 도메인, 도메인 제약조건 등)을 만족하는 것을 통해 보장한다.
Isolation
- 트랜잭션 수행시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장하는 것이다.
- 트랜잭션 간에는 서로 간섭할 수 없다.
- 트랜잭션들의 병행 처리(Concurrent Processing)시 보장되어야 한다.
- 보장
- OS의 세마포어와 비슷한 개념으로 lock & unlock을 통해 보장한다.
- deadlock 상태를 막기 위한 추가 작업이 필요
Durability
- 한번 반영된 트랜잭션은 영구적으로 적용된다.