Skip to main content

ACID

시작하기에 앞서

주의

해당 블로그의 모든 문서는 학습한 내용을 제 방식으로 정리하여 작성하고 있습니다.
순수 창작물도 아니고, 틀린 내용이 있을 수 있으므로 참고하고 읽어주시면 감사하겠습니다.


원자성(Atomicity)

트랜잭션에 포함된 작업은 전부 수행되거나 아니면 전부 수행되지 말아야 한다는 특성입니다.

올라프와 엘사가 거래를 할 때, (A) 올라프의 통장에서는 -10,000원의 연산이 수행되고, (B) 엘사의 통장에서는 +10,000원의 연산이 수행되어야 한다면 A 연산과 B 연산이 모두 성공할 경우에만 데이터베이스에 정상적으로 반영되고, 하나라도 실패했을 경우엔 전부 데이터베이스에 반영되지 않아야 합니다.

tip

트랜잭션이 무사히 수행되면 정상적으로 데이터베이스에 반영해야 하는데, 작업을 완료했다고 확정하고 데이터베이스에 정상적으로 반영하는 명령어를 COMMIT이라고 합니다.

그리고, 트랜잭션 작업 중 문제가 발생했을 때, 트랜잭션 처리 과정에서 발생한 변경 사항을 취소하고, 이전 COMMIT의 상태로 되돌리는 명령어를 ROLLBACK이라고 합니다.

일관성(Consistency)

트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지해야 한다는 특성입니다.

(예시 추가 필요)

고립성(Isolation)

여러 트랜잭션은 동시에 수행되는 경우가 많습니다. 이때 각 트랜잭션은 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하여 독립적으로 작업을 수행해야 한다는 특성입니다.

따라서 동시에 수행되는 트랜잭션이 동일한 데이터를 가지고 충돌하지 않도록 제어해줘야 하는데, 이를 동시성 제어라고 합니다.

(예시 추가 필요)

지속성(Durability)

성공적으로 수행된 트랜잭션은 데이터베이스에 영원히 반영되어야 한다는 특성입니다. 즉, 트랜잭션이 완료되어 저장이 된 데이터베이스는 저장 후에 생기는 정전, 장애, 오류 등에 영향을 받지 않아야 합니다.