ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DB] 트랜잭션 (Transaction)
    TIL 2024. 2. 19. 13:25

     

    트랜잭션이란, 데이터베이스의 상태를 변화시키기위해 수행하는 작업의 단위를 의미한다 .

     하나의 논리적 기능을 수행하기위해 DB에서 수행하는 작업단위이다.

     작업단위는 SQL 명령문 한문장이 아니다. 여러 명령문들을 합친 사람이 정한 기준을 따르는 단위이다.


    예시)
    예를 들어 A가 B에게 10만원을 송금을 하는 상황이다


    그렇다면 A의 계좌에서 10만원을 뺀 값으로 update 해주고, (인출)

    B의 계좌에서는 10만원을 추가한 값으로 update 해줘야한다. (입금)


    만일, 이러한 상황에서 2가지의 작업중 하나만 성공하고, 나머지가 실패하면 큰 문제가 발생한다.


    인출만 성공하고 입금이 실패하면 전체 계좌 금액중 10만원이 사라지는 문제가 생기고,

    입금만 성공하고 인출이 실패하면 전체 계좌금액이 10만원이 생겨나는 문제가 생긴다.

    즉, 이 2가지 작업은 동시에 성공하든지, 동시에 실패해야 문제가 생기지 않는다.

    그래서 이 2가지 작업을 하나로 묶어주는 것이 트랜잭션이다



    여기서 모든 작업이 성공적으로 완료되어 DB에 결과를 반영하는 것이 COMMIT이고,

    작업 중 일부가 실패해서 DB의 모든 변경사항을 원래대로 되돌리는 것이 ROLL BACK이다




    트랜잭션 특징)


    원자성 : 트랜잭션이 한 단위로 처리되어, 데이터베이스에 모두 반영이되든지, 모두 반영되지 않는다는 것

    일관성 : 트랜잭션의 작업 처리 결과가 항상 일관성이있어야 한다

    독립성 : 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연상에 끼어들 수 없다

    영구성 : 트랜잭션이 성공적으로 완료되었을때, 결과는 영구적으로 반영되어야한다






    트랜잭션 사용법)

    START TRANSACTION

    (이 블록안의 명령어들은 하나의 명령어 처럼 수행된다)

    (모두 성공하든지, 모두 실패한다)

    (인출)

    (입금)

    COMMIT












     

    참고)

    https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98Transaction-%EC%9D%B4%EB%9E%80-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC

Designed by Tistory.