트랜잭션(Transaction) 이란 ?
트랜잭션이란 한 단위의 작업으로 취급되는 모든 작업을 말한다. 트랜잭션은 완전히 종료되기도 하고 전혀 완료되지 않을 수도 있으며, 스토리지 시스템을 한결같은 상태로 둔다.
트랜잭션의 전형적인 예시로는 은행 계좌에서 현금을 인출할 때 일어나는 것이다. 현금이 계좌에서 인출되거나 인출되지 않거나 둘 중 하나일 뿐 그 중간 어딘가의 상태란 없기 때문이다.
트랜잭션의 ACID
ACID는 트랜잭션을 정의하는 4가지 중대한 속성을 가리키는 약어이다.
원자성(Atomicity), 일관성(Consistency) , 독립성(Isolation), 영속성(Durability)을 의미한다. 하나하나 의미를 알아보자.
원자성(Atomicity)
원자성은 트랜잭션에 속한 각각의 문(데이터를 읽기, 쓰기, 업데이트 또는 삭제하기 위함)을 하나의 단위로 취급한다. 문 전체를 실행하거나 그 문의 어떤 부분도 실행하지 않거나 둘 중 하나를 의미한다.
일관성(Consistency)
일관성은 트랜잭션이 테이블에 변경 사항을 적용할 때 미리 정의된, 예측할 수 있는 방식만 취하는 것이다. 트랜잭션 일관성이 확보되면 데이터 손상이나 오류 때문에 테이블 무결성에 의도치 않은 결과가 생기지 않는다.
독립성(Isolation)
여러 사용자가 같은 테이블에서 모두 동시에 읽고 쓰기 작업을 할 때, 각각의 트랜잭션을 격리하면 동시 트랜잭션이 서로 방해하거나 영향을 미치지 않는다. 각각 요청이 실제로는 모두 동시에 발생하더라도 마치 하나씩 발생하는 것처럼 보일 수 있다.
영속성(Durability)
트랜잭션 실행으로 인해 데이터에 적용된 변경 사항이 저장되도록 보장한다. 시스템 오류가 발생해도 마찬가지
ACID 트랜잭션 장점
데이터베이스 작업에 ACID 속성이 있다면 이를 ACID 트랜잭션이라고 부른다. ACID 트랜잭션은 가능한 최대한의 데이터 안정성과 무결성을 보장해주는데 작업 하나가 일부분만 완료되는 바람에 데이터가 일관적이지 않은 상태가 되는 불상사가 절대로 일어나지 않게 해준다는 뜻이다. 예를 들어 ACID 트랜잭션이 없다고 가정하면 데이터베이스 테이블에 몇몇 데이터를 쓰던 중에 예기치 못하게 정전이 되면 데이터 중 일부는 저장되고 일부는 저장되지 않는 사태가 발생할 수 있는데, 이렇게 되면 데이터베이스는 일관성 없는 상태가 되어 복구하기 무척 어렵고 시간도 오래 걸리게 된다.