[Spring] 트랜잭션

zini9188·2023년 3월 1일
0

Spring

목록 보기
26/33

트랜잭션이란?

테이터베이스의 상태를 변경시키기 위해 수행하는 작업의 단위를 의미한다.

데이터베이스의 상태를 변화시킨다는 것은 질의어인 SQL을 이용하여 데이터베이스에 접근하는 것을 의미한다. 그리고 작업의 단위는 물리적으론 여러 개의 작업이지만, 논리적으로는 하나의 작업으로 인식될 수 있는 단위를 말한다.

트랜잭션의 성질

트랜잭션은 ACID라는 네 가지의 특성을 가진다.

원자성(Atomicity)

  • 트랜잭션 내의 모든 명령은 반드시 수행되어야 한다.

  • 하나의 오류라도 발생하면 트랜잭션 전부가 취소가 된다.

일관성(Consistency)

  • 오류없이 성공적으로 종료되는 경우, 비즈니스 로직에서 의도하는 작업이 일관성있게 저장되거나 변경되어야 한다.

격리성(Isolation)

  • 여러 개의 트랜잭션은 각각 독립적으로 실행되어야 하며, 이는 다른 트랜잭션이 연산에 끼어들지 못하게 하는 것을 보장한다.

지속성(Durability)

  • 성공적으로 완료된 트랜잭션은 시스템의 상태에 상관없이 영구적으로 반영되어야 한다.

커밋(commit)과 롤백(rollback)

커밋

하나의 트랜잭션의 작업이 성공적으로 완료되어 데이터베이스가 일관성 있는 상태에 있음을 의미한다.

롤백

트랜잭션 작업 중 문제가 생겨, 원자성을 지키기 위해 해당 트랜잭션을 재실행하거나 취소하는 것을 의미한다.

트랜잭션의 상태

Active

트랜잭션이 실행 중인 상태

Failed

트랜잭션이 실행되다 오류가 발생하여 중단된 상태

Aborted

트랜잭션이 비정상적으로 종료되어 Rollback이 수행된 상태

Partially Committed

트랜잭션의 연산이 마지막까지 실행되어 Commit을 수행하기 직전의 상태

Commited

트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태

profile
백엔드를 지망하는 개발자

0개의 댓글