본문 바로가기
DataBase

[Database] Transaction (트랜잭션)

by Dev_Green 2023. 3. 13.

Transaction 이란?

트랜잭션은 데이터 베이스 시스템에서 "더이상 쪼갤 수 없는 업무 처리의 최소 단위"이다.

 

  예를 들어, A가 B에게 1,000원을 송금한 경우, 이 거래는 더 이상 쪼갤 수 없는 하나의 트랜잭션이 된다. 'A가 돈을 보낸 행위'와 'B가 돈을 받는 행위'는 별개로 분리될 수 없으며, 둘 중 하나라도 온전히 수행되지 않는다면 해당 거래는 성사되지 않는다. 트랜잭션 처리가 정상적으로 완료된 경우 Commit을 하고, 오류가 발생할 경우 원래 상태로 Rolback한다. 

 

트랜잭션은 거래의 안전성을 확보하는 방법이다. 

 

Transaction의 조건(ACID)

  1.  Atomicity(원자성)
    • 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 전혀 반영되지 않든지 해야한다. 
  2. Consistenct(일관성)
    • 트랜잭션이 진행되는 동안 DB가 변경되더라도 업데이트된 DB로 트랜잭션이 진행되는 것이 아니라, 처음 트랜잭션을 진행하기 위해 참조한 DB로 진행함으로써 일관성 있는 데이터를 만든다.
  3. Isolation(격리성)
    • 하나의 트랜잭션이 수행되는 동안 다른 트랜잭션의 작업이 끼어들지 못하도록 보장하는 것이다.
    • 트랜잭션이 실행하는 도중에 변경한 데이터는 이 트랜잭션이 완료될 때까지 다른 트랜잭션이 참조하지 못하게 한다.
  4. Durability(지속성)
    • 트랜잭션이 정상적으로 종료된 다음에는 영구적으로 DB에 작업의 결과가 저장되어야 한다.

 

Transaction의 연산

Commit

  커밋 연산은 모든 작업들을 정상적으로 처리하겠다고 확정하는 명령어로서, 처리과정을 DB에 영구적으로 저장하는 것이다. 커밋을 수행하면 하나의 트랜잭션 과정을 종료하는 것이다. 

 

Rollback

  롤백 연산은 작업 중 문제가 발생하여 트랜잭션의 처리과정에서 발생한 변경사항을 취소하는 명령어이다. 트랜잭션의 일부가 정상적으로 처리되더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행한 모든 연산을 취소하여 트랜잭션이 시작되기 이전이 상태로 되돌리는 것이다.