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

트랜잭션이란?

by 검은도자기 2021. 10. 28.

정의

DB에서 하나의 논리적인 기능을 정상적으로 수행하기 위한 작업의 기본 단위

 

 

트랜잭션이 왜 필요할까?

만약 A유저에서 1000원을 출금하고 B 유저의 계좌로 1000원을 입금하는 과정에서 에러가 발생하여 입금이 되지 못했을 경우 돈이 사라지는 중대한 문제가 발생하게 된다. 이를 방지하기 위해 반드시 수행되야하는 작업의 단위를 트랜잭션으로 묶어 실행하는 것이다. 트랜잭션으로 묶인 작업 단위에서 에러가 발생하면 중간 쿼리는 DB에 반영되지 않게 되어 돈이 유실되는 중대한 문제는 발생하지 않는다.

 

 

트랜잭션 특징

  • 원자성(Atomicity) : 분해가 불가능한 작업의 최소 단위이며, 작업이 하나라도 실패할 경우 전체가 취소되어야 하는 특성
  • 일관성(Consistency) : 트랜잭션이 실행을 완료하면 언제나 일관성 있는 DB 상태를 보존해야 하는 특성
  • 격리성(Isolation) : 수행 중인 트랜잭션은 완료 전까지 다른 트랜잭션에서 수행 결과를 참조할 수 없는 특성
  • 영속성(Durability) : 성공적으로 완료된 트랜잭션 결과는 영구적으로 데이터베이스에 저장하는 특성

 

트랜잭션 연산

트랜잭션의 수행과 관련해서 주로 사용하는 연산으로는 작업을 완료했다는 뜻인 commit 연산과 작업을 취소하는 의미인 rollback 연산이 있습니다.

  • commit : 한개의 트랜잭션에 대한 작업이 성공적으로 끝나고 DB가 다시 일관된 상태에 있을 때 이 트랜잭션이 행한 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산.
  • rollback : 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성을 깨뜨렸을 때, 트랜잭션의 원자성을 구현하기 위해 트랜잭션이 행한 모든 연산을 취소(Undo)하는 연산

 

트랜잭션 상태

트랜잭션은 총 다섯 가지의 상태가 있습니다.

  • 동작 방식 : 처음 트랜잭션이 시작하면 트랜잭션이 활성(Active) 상태가 되고 트랜잭션의 마지막 연산이 끝났다면 부분 완료(Partially Committed) 상태가 됩니다. 그 후 commit을 실행하면 트랜잭션은 완료(Committed) 상태가 되고 트랜잭션의 완료 상태나 부분 완료 상태에서 여러 원인으로 인해 실패가 되면 트랜잭션은 실패(Failed) 상태가 되며, 실패(Failed) 상태에서 rollback 연산을 실행하면 철회(Aborted) 상태가 됩니다.
  • 활동(Active) : 초기 상태, 트랜잭션이 실행 중일 때 가지는 상태
  • 부분 완료(Partially Committed) : 트랜잭션의 마지막 연산까지 실행되었지만, Commit 연산이 실행되기 직전의 상태
  • 완료(Committed) : 트랜잭션이 성공적으로 종료되어 Commit 연산까지 마친 상태
  • 실패(Failed) : 트랜잭션이 오류가 발생하여 중지된 상태
  • 철회(Aborted) : 트랜잭션 실패되어 Rollback이 마친 상태

 

 

마무리

이번에는 DB 기본 지식 중 하나인 트랜잭션에 대해서 정리해봤습니다.

트랜잭션에 관련된 내용이 많이 있으나 아직 정리가 다 안되어서 부분적으로 정리를 해봤습니다.

아직 부족하거나 틀린 부분이 있을 수도 있으니 주의하시면 좋을 거 같습니다.

이번 포스팅은 마무리하면서 다음 포스팅에서 뵙겠습니다.

'데이터베이스' 카테고리의 다른 글

[DB] 정규화란?  (0) 2022.07.28
[DB] 관계(Relationship)란?  (0) 2022.06.26
[DB] DBMS의 키(key)의 개념과 종류  (0) 2022.06.06
인덱스(Index)란?  (0) 2021.11.10