본문 바로가기
데이타베이스

트랜잭션(Transaction) 정리

by minimax95 2020. 7. 3.

이번 포스팅에서는 트랜잭션(Transaction)에 대해서 알아보겠습니다.

 

트랜잭션은 데이터베이스에서 일어나는 연산의 집합으로 하나의 논리적인 기능을 수행하기 위한 작업의 단위입니다. 데이터베이스의 상태를 하나의 일관된 상태에서 다른 일관된 상태로 변화시키며, 하나의 트랜잭션은 완료(Commit)되거나 실패 시 복귀(Rollback)되어야 합니다.

 

트랜잭션의 특성에는 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 영속성(Durability) 등이 있습니다.

먼저 원자성은 트랜잭션의 가장 중요한 성질로 트랜잭션이 연산의 집단을 의미하지만, 논리적으로 하나라는 의미를 가집니다. 또한 분리해서 처리할 수 없고, 일부 완료라는 것은 존재하지 않으며 연산의 결과가 모두 반영되든지 아니면 전혀 반영되지 않아야 한다는 성질을 말합니다.

 

일관성은 트랜잭션이 실행되고 나서도 데이터베이스의 상태는 무결성이 유지되고 모순되지 말아야 한다는 성질을 말합니다. 또한 고정 요소는 트랜잭션 실행 전과 후가 같아야 한다는 성질을 말합니다.

 

독립성은 격리성이라고도 하며 트랜잭션이 실행되는 중간에는 다른 트랜잭션 연산이 침범하지 못하며, 같은 자원에 대해 여러 개의 트랜잭션이 동시에 사용할 수 없다는 성질을 의미합니다.

 

영속성은 지속성, 계속성이라고도 하며 트랜잭션에 의해서 변화된 상태는 계속해서 유지될 수 있어야 하고, 트랜잭션이 성공적인 완료를 응답했다면 완료의 효과는 지속되어야 한다는 성질을 의미합니다.

 

트랜잭션의 상태 변화를 그림으로 나타내면 아래와 같습니다.

활동(Active) : 트랜잭션이 실행 중인 상태를 의미합니다.

부분 완료(Partially Committed) : 트랜잭션이 마지막 연산을 끝내고 데이터베이스에 실행 결과를 적용하기 직전의 상태를 의미합니다.

완료(Committed) : 트랜잭션이 연산을 완료하고 연산의 결과를 데이터베이스에 적용한 상태를 의미합니다.

실패(Failed) : 트랜잭션이 실행 중 어떤 오류에 의해서 더 이상 진행될 수 없는 상태를 의미합니다.

철회(Aborted) :  트랜잭션 실행이 실패하여 복귀된 상태를 의미합니다.

 

트랜잭션의 연산에는 COMMIT(완료)와 ROLLBACK(복귀)가 있습니다.

COMMIT(완료)는 트랜잭션 실행이 성공적으로 종료되었음을 알리는 연산자로 데이터 아이템의 값들이 영속성이 보장되며, 데이터베이스의 상태가 일관성 있는 상태로 변화된 상태를 의미합니다.

ROLLBACK(복귀)은 트랜잭션 실행이 실패하였음을 알리는 연산자로 트랜잭션이 수행한 결과를 원래의 상태로 복귀시켜야 하는 상태를 의미합니다.

 

지금까지 트랜잭션의 정의와 특성, 상태 천이 및 연산에 대해서 알아보았습니다.

감사합니다.

 

댓글