Next-Squad/Interview-Question

[Database] 13. ACID 란?

CMSSKKK opened this issue · 1 comments

ACID 란?

키워드

Transaction, Spring의 @Transactional

ACID는 트랜잭션의 성질, 트랜잭션이 안전하게 수행되는 것을 보장하는 성질 4가지의 줄임말입니다.

Atomicity(원자성)은 트랜잭션의 모든 연산들이 정상적으로 수행 완료되거나,
아니면 어떠한 연산도 수행되지 않은 상태(트랜잭션 시작 전 상태)을 보장하는 것을 말합니다.
트랜잭션 내의 특정 연산으로 인한 데이터의 변경이 실패한다면 정상적으로 성공한 로직 또한 롤백된다는 것을 의미합니다. (all or nothing)

Consistency(일관성)은 트랜잭션의 성공(commit)은 유효한 상태로만 가능하다는 것을 뜻합니다.
기본 키, 외래 키 제약과 같은 명시적인 무결성 제약 조건이 지켜져야하는 것을 뜻하며, 비명시적으로도 연산의 결과가 일관적임을 보장하는 것을 말합니다. (계좌 이체의 경우 두 잔고의 합이 일치하는 것)

Isolation(독립성)은 트랜잭션의 수행 중에 다른 트랜잭션의 영향을 받지않고 독립적으로 수행되는 것을 뜻합니다. (다른 트랜잭션과 격리)
트랜잭션이 독립적으로 수행되지 못한다면, 트랜잭션이 원래 상태로 되돌아갈 수 없게 됩니다.

Durability(지속성)은 트랜잭션이 성공(commit)해서 트랜잭션으로 인한 변경이 장애가 발생하더라도 계속 보존되는 것을 뜻합니다.

References

https://d2.naver.com/helloworld/407507