[TIL]트랜잭션(Transaction)

woonie·2022년 2월 27일
0

TIL

목록 보기
39/64

항해 45일차

트랜잭션이란?

  • 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위

    데이터베이스의 상태를 변경시킨다는 이야기는 SELECT, UPDATE, INSERT, DELETE 와 같은 행동

이런 트랜잭션은 상황에 따라 여러 개가 만들어질 수 있다.
그 하나의 트랜잭션은 Commit (저장) 되거나 Rollback (철회)될 수 있다.

예로 리뷰를 작성하면 포인트를 받는다고 가정해보자.
A,B,C,D가 각각 리뷰를 작성하면 1,000포인트를 지급 해야하고 이를 DB에 저장해야한다.
그런데 A,B,C는 정상적으로 저장이 되었고 D는 저장에 실패했다. 이런 상황은 잘못된 처리이므로 다시 저장을 수행해야 하는데 A,B,C는 이미 저장이 완료되었기에 다시 저장을 하면 2,000포인트가 저장이 된다.
이런 문제점들을 위해서 트랜잭션은 Commit과 Rollback을 이용한다.

트랜잭션의 특징

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

1. 원자성

  • 트랜잭션이 DB에 모두 반영되거나 전혀 반영되지 않아야 한다.

2. 일관성

  • 트랜잭션 작업 처리의 결과가 항상 일관되어야 한다. 즉 데이터 타입이 반환 후와 전이 항상 동일해야 한다.
    트랜잭션이 진행되는 동안에 데이터베이스가 변경 되더라도 업데이트된 데이터베이스로 트랜잭션이 진행되는것이 아니라,처음에 트랜잭션을 진행 하기 위해 참조한 데이터베이스로 진행된다

3. 독립성

  • 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없다. 하나의 특정 트랜잭션이 완료될때까지, 다른 트랜잭션이 특정 트랜잭션의 결과를 참조할 수 없다.

4. 지속성

  • 트랜잭션이 성공적으로 완료됬을 경우, 결과는 영구적으로 반영되어야 한다.

트랜잭션의 Commit, Rollback 연산

Commit

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

Rollback

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

트랜잭션의 상태

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

  1. Active
    트랜잭션이 현재 실행 중인 상태

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

  3. Aborted
    브랜잭션이 비정상 종료되어 Rollback 이 수행된 상태

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

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

profile
동료들과 함께하는 개발의 중요성에 관심이 많습니다. 언제나 호기심을 갖고 꾸준히 노력하는 개발자로서 성장하고 있습니다.

0개의 댓글