RDBS/MYSQL

[MySQL]트랜잭션(Trasaction) 예제로 간단하게 이해하기

MoonSta 2023. 7. 2. 22:07

 트랜잭션(Transaction)이란 데이터베이스와 같은 시스템에서 처리되고 있는 업무 중 반드시 묶여서 처리되어야 하는 묶음의 최소단위이다. 일상생활에서 많이 사용되고 있는 트랜잭션 중 하나가 바로 송금 서비스이다. 이 과정을 들여다보면 A라는 사람이 B에게 송금을 한다고 가정해 보자.

 


 

트랜잭션(Transaction)으로 구성하는 이유 

 

  • A의 잔고 : 금액 차감
  • B의 잔고 : 금액 증가

이러한 두 과정은 각각의 업무이지만 하나의 트랜잭션(Transaction)으로 구성되어 처리된다.

 

 만약 위의 두 과정을 트랜잭션(Transaction)으로 구성하지 않고 시스템을 운영하면 어떤 일이 벌어질까? 단일 사용자이고, 두 개의 업무가 순서대로 처리된다면 문제가 없을 것이다. 하지만 대부분에 시스템에는 여러 개의 클라이언트가 동시에 접근한다. 이렇게 된다면 업무가 처리되는 사이에 잘못된 데이터가 들어와 데이터의 부정합을 야기한다. 이러한 이유로 저 일련의 과정들을 트랜잭션(Transaction)으로 구성하여 부정합을 방지한다. 

 


 

DB 트랜잭션(Transaction)

 

 위의 설명한 개념은 데이터베이스에서도 똑같이 적용된다. 데이터베이스는 DML(SELECT, INSERT, DELETE, UPDATE)를 사용하여 데이터베이스의 상태를 변형시킬 수 있다. 즉 한 번에 변형이 한 번의 업무와 같은 셈이다. 위의 예시를 데이터베이스에서 어떻게 수행되는지 확인하겠습니다. 

 

  • A의 잔고 : 금액 차감 -  출금 - UPDATE
  • B의 잔고 : 금액 증가 -  입금 - UPDATE

 

두 개의 업무를 하나의 트랜잭션(Transaction)으로 구성하였다. 

 


 

트랜잭션(Transaction) 특징

 

  • 원자성 : 트랜잭션 결과는 항상 commit 또는 rollback이어야 한다. 
  • 일관성 : 트랜잭션은 일관성 있는 상태를 유지해야 한다
  • 지속성 : 성공한 트랜잭션은 영원히 기록된다.  
  • 독립성 : 각각의 트랜잭션은 독립적으로 수행되어야 한다.