[꼼꼼한 개발자] 꼼코더

[DB] - Transaction, 트랜잭션 간단하고 쉽게 이해하기 본문

간단하고 쉽게/DB

[DB] - Transaction, 트랜잭션 간단하고 쉽게 이해하기

꼼코더 2022. 12. 25. 01:01
반응형

❓ Transaction, 트랜잭션이란?

  • 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미.
  • 쉽게 말해 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위이다.
💡 데이터베이스의 상태 변경이란? SELECT, UPDATE, INSERT, DELETE와 같은 행동을 뜻한다.

👀 상황에 따라 달라지는 트랙잭션

이런 트랜잭션은 상황에 따라 여러 개가 만들어질 수 있다.

그 하나의 트랜잭션은 Commit (저장) 되거나 Rollback (철회)될 수 있다.

 

그 이유는 무엇일까?

 

예를 들어 우리가 문제풀이에 성공 시 포인트가 적립된다고 가정해 보자.

유저 A, B, C, D 가 문제를 풀어 각각 100 Point 씩 얻었고 이를 DB에 저장하려 한다.

 

‘A 저장 완료, B 저장 완료, C 저장 완료, D 저장 실패’

 

이런 상황이 오게 된다면 잘못된 처리이므로 다시 저장을 수행한다.

하지만 A, B, C는 이미 저장이 완료되었기 때문에 다시 저장을 시도하면 200점이 저장되게 된다.

 

이런 문제점들을 위해서 트랜잭션은 Commit과 Rollback 을 이용한다.


💡 트랜잭션의 특징

  • 트랜잭션에는 4가지의 특징이 존재한다.

🆗  원자성

  • 원자성은 트랜잭션이 DB에 모두 반영되거나, 전혀 반영되지 않거나를 뜻한다.
  • All or Nothing을 생각하면 된다.

💬 일관성

  • 일관성은 트랜잭션 작업 처리의 결과가 항상 일관되어야 한다를 뜻한다.
  • 즉, 데이터 타입이 반환 후와 전이 항상 동일해야 한다.

🧑🏻‍💼 독립성

  • 독립성은 하나의 트랜잭션은 다른 트랜잭션에 끼어들 수 없고 마찬가지로 독립적임을 의미한다.
  • 즉, 각각의 트랜잭션은 독립적이라 서로 간섭이 불가능하다.

👨🏻‍💻 지속성

  • 지속성은 트랜잭션이 성공적으로 완료되면 영구적으로 결과에 반영되어야 함을 뜻한다.
  • 보통 commit 이 된다면 지속성은 만족할 수 있다.

🛠 트랜잭션의 Commit 과 Rollback

🆗 Commit

  • 하나의 트랜잭션이 성공적으로 끝나서 데이터베이스가 일관성 있는 상태에 있음을 의미한다.

🔙 Rollback

  • 트랜잭션의 원자성이 깨질 때, 즉 하나의 트랜잭션 처리가 비정상적으로 종료되었을 때의 상태를 뜻한다.
  • Rollback 이 이뤄진다면 트랜잭션을 다시 실행하거나 부분적으로 변경된 결과를 취소할 수 있다.

🖐 트랜잭션의 상태

  • 트랜잭션은 논리적으로 5가지의 상태에 있을 수 있다.

Active

  • 트랜잭션이 현재 실행 중인 상태

Failed

  • 트랜잭션이 실행되다 오류가 발생해서 중단된 상태

Aborted

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

Partially Committed

  • 트랜잭션의 연산이 마지막까지 실행되고 Commit이 되기 직전 상태

Committed

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

 

 

 

참고 : https://wonit.tistory.com/462

 

 

 

 

 

 

 

 

Comments