트랜잭션

김성훈·2022년 1월 16일

개념

목록 보기
5/8
post-thumbnail

트랜잭션?

데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.

여러 쿼리를 논리적으로 하나의 작업으로 묶어주는 것!

예) 돈 거래
김성훈이 쿠팡에서 물건을 산다고 가정

  • 김성훈 계좌에서 5천원이 출금
  • 쿠팡 계좌에 5천원 입금

이럴 때 2개에 쿼리가 실행된다

  • UPDATE문: 김성훈 계좌에서 5천원 빼기
  • UPDATE문: 쿠팡 계좌에 5천원 더하기

이때 만약에 서버다운이나 어떤 이유로 김성훈 계좌에서는 돈이 빠졌지만 쿠팡 계좌에 돈이 안 들어온 경우가 있을 것이다. 이런 상황을 방지하기 위해 나온 것인 트랜잭션이다.

하나의 작업으로 이루어지는 여러 쿼리들을 트랜잭션이라는 논리적인 하나의 작업 단위로 묶어서 쿼리들이 한꺼번에 실행되거나 아니면 아무 쿼리도 실행되지 않게 해주는 것이다.

트랜잭션커밋롤백을 이용해 사용자 혹은 시스템 상의 실수가 있더라도 데이터베이스가 데이터를 안정적으로 보장할 수 있도록 해준다.

커밋:
쿼리를 모두 성공적으로 수행했다면 수정된 내용을 데이터 베이스에 반영하는 것
롤백:
쿼리를 실행하는 도중 하나라도 실패했다면 이전에 했던 쿼리를 모두 없던 일처럼 되돌리는 것

트랜잭션의 성질:

트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질 (ACID)

  • Atomicity(원자성)
    트랜잭션은 DB에 모두 반영되거나, 전혀 반영되지 않아야 한다.
    (완료되지 않은 트랜잭션의 중간 상태를 DB에 반영해서는 안 된다.)

  • Consistentcy(일관성)
    트랜잭션 작업처리결과는 항상 일관성 있어야 한다.
    (데이터베이스는 항상 일관된 상태로 유지되어야 한다(DB조건에 따라 종료되거나 함).)

  • Isolation(독립성)
    둘 이상의 트랜잭션이 동시 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없다.
    (각각의 트랜잭션은 서로 간섭 없이 독립적으로 이루어져야 한다.)

  • Durability(지속성)
    트랜잭션이 성공적으로 완료되었으면 결과는 영구히 반영되어야 한다.

<출처>

[10분 테코톡] 🌼 예지니어스의 트랜잭션

Database Transaction

profile
화이팅

0개의 댓글