ACID 는 데이터베이스 무결성 보장하기 위해 트랜잭션의 설계 원칙이다.
'A' 는 Atomic 원자성으로 트랜잭션의 원자성이 보장되어야 한다. 트랜잭션 단위는 더이상 쪼개질 수 없는 작업 단위여야 한다. 트랜잭션이 중간에 중단되어도 트랜잭션 실행 전으로 DB 상태가 되어야 한다. 실행됐거나 안됐거나 2가지 결과 상태만 존재할 수 있어야 한다. 예를 들어, 새 유저를 추가하고 Role을 할당하는 트랜잭션이 있다고 가정한다. 실행 중에 새 유저만 추가되고 트랜잭션이 중단되었다면 새 유저 추가된 것은 rollback 되거나 DB에 반영되면 안된다. 반면 정상적으로 트랜잭션 완료되었다면 DB에 잘 반영되어야 한다.
'C'는 Consistency 일관성으로 트랜잭션 실행 전후로 DB 상태는 모순이 없어야 한다. 무결성 제약조건이 깨지지 않아야 한다. 무결성 조건을 깨는 트랜잭션은 실패시켜야 한다.
'I'는 Isolated 격리성으로 트랜잭션 간 참조나 간섭이 있으면 안된다. 트랜잭션 간 참조나 간섭이 있다면 트랜잭션의 결과가 일관적일 수 없다. 이 제약 조건은 성능 관련으로 유연성이 있다.
'D'는 Durability 지속성으로 수행된 트랜잭션은 DB에 영원히 반영되어야 한다. 하지만 데이터베이스에선 모든 트랜잭션은 로그로 남기고 있고 장애가 있다면 장애 발생 전을 돌이킬 순 있다.
'공부노트 > 데이터베이스' 카테고리의 다른 글
데이터베이스 Lock (0) | 2023.08.25 |
---|---|
트랜잭션 격리 수준 (0) | 2023.08.22 |
[MySQL] InnoDB 아키텍처 (0) | 2022.12.11 |
MySQL 메모 (0) | 2022.12.05 |
MYSQL 엔진 아키텍처 (0) | 2022.11.26 |