개요
트랜잭션(Transaction)은 데이터베이스의 논리적 연산 단위로, 분할할 수 없는 최소의 단위이다. 트랜잭션은 밀접히 관련되어 분리될 수 없는 하나 이상의 데이터베이스 조작을 가리키기 때문에 전부 적용되거나 전부 취소(All or Nothing)되어야 한다.
올바르게 반영된 데이터를 데이터베이스에 적용하는 것을 커밋(Commit), 트랜잭션의 시작으로 되돌려 취소하는 것을 롤백(Rollback)이라고 한다. SQL의 UPDATE
, INSERT
, DELETE
등 데이터를 수정하는 DML 문이 트랜잭션의 직접적인 대상이다. SELECT
문장은 배타적 락(Lock)의 대상으로서, 트랜잭션으로부터 간접적인 영향을 받는다.
목적
트랜잭션은 데이터베이스의 무결성을 위해 사용된다. 데이터베이스의 무결성이란 데이터의 정확성과 일관성을 유지하고 보장하는 것을 말한다.
특성
- 원자성(Atomicity): 트랜잭션에서 정의된 연산들은 전부 적용되거나, 전부 취소되어야 한다.
- 일관성(Consistency): 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못되어 있지 않다면 트랙잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안 된다.
- 고립성(Isolation): 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안 된다.
- 지속성(Durability): 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.
데이터베이스에서의 트랜잭션
대부분의 DBMS는 트랜잭션 기능을 지원하며, 보통 다음과 비슷한 규칙을 가진다.
- 트랜잭션 작업 시작
- 연속적인 데이터 조작이나 쿼리 실행
- 오류가 발생하지 않으면, 트랜잭션 커밋
- 오류가 발생하면, 트랜잭션 롤백
참고 문헌
- 한국데이터산업진흥원. SQL 전문가 가이드. 한국데이터산업진흥원. 2013
참고 페이지