트랜잭션에서의 ACID
트랜잭션 ACID
트랜잭션 (Transaction)
트랜잭션이란 질의(query)를 하나의 묶음으로 처리하도록하는 작업수행의 논리적 단위 입니다.
트랜잭션은 ACID(원자성, 일관성, 독립성, 지속성)라는 특성을 만족해야합니다.
원자성 (Atomicity)
트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않음을 보장하는 특성입니다.
흔히 All or Nothing 이라고 부르는 개념으로 작업단위를 일부분만 실행하지 않고 실행이 되지 않는 상황이면 아무것도 실행되지 않아야하며 실행이 되었다면 실행되어야하는 영역(트랜잭션영역)은 모두 실행되어야 하는 특성입니다.
일관성 (Consistency)
트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터 베이스를 유지하는 것을 의미합니다.
일관성이라는 특성은 여러가지 상황에 대한 일관성을 함축적으로 표현하는 특성입니다.
무결성 제약이 존재한다면 어느 트랜잭션은 무결성 제약이 적용되고 또 어떤 트랜잭션은 무결성제약이 적용되지 않고 하는 상황이 생기지 않아야하는 경우나, 고객의 잔고를 표현하는 데이터타입이 정수형이라면 예외적인 트랜잭션이 없이 모든 트랜잭션이 정수형으로 사용해야하는 경우 등 , 일반적으로 RDBMS 에서 언급되는 제약들은 모두 일관성 있게 적용되어야한다는 특성입니다.
독립성 (Isolation)
고립성, 격리성 이라고도 부르는 이 특성은 모든 트랜잭션은 다른 트랜잭션으로 부터 독립 되어야 한다는 특성입니다.
트랜잭션 작업 수행 중에는 다른 트랜잭션에 영향을 주어서도 안되며, 다른 트랜잭션들에 의해서 간섭을 받아서도 안됩니다. 영향을 받게 된다면 전혀 다른 동작이 이루어 질 수 도 있습니다.
지속성 (Durability)
성공적으로 수행된 트랜잭션은 영원히 반영되어야함을 의미합니다. 트랜잭션이 성공적으로 수행되었다면 해당 트랜잭셔에 대한 로그까지 남아야하며 만약 시스템 오류가 발생하더라도 해당 기록은 영구적으로 기록되어야 있어야 합니다. 즉, commit 이 완료되었다면 commit 도중 시스템 오류가 발생했더라도 작업 완료에 대한 기록은 남아있어야하며 이를 기반으로 데이터 자체는 정상적으로 유지되어야 합니다.
댓글남기기