ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 트랜잭션(Transaction)이란?
    기본적인 cs 지식 2022. 10. 3. 16:30
    728x90

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

    두개의 자료를 동시에 입력처리 시키고자 할때,
        1개의 자료가 먼저 입력되고,
        2번째 자료처리에서 문제가 발생된다면,
        이때 기존에 입력된 1번째 자료도 다시 입력을 거둬줘야한다. - Roll Back
        따라서 두개 테이블이 모두 입력처리 되지 않도록 처리하여,
        입력전과 같은 상태로 만들어주는 것이 주 목적이다.(원자성)


    인터넷 뱅킹을 통해 계좌이체 작업을 완벽하게 수행하기 위해 두 개의 데이터베이스 연산을 처리해야 한다면, 계좌이체 트랜잭션은 두 개의 연산으로 구성할 수 있다.

     

    계좌이체 트랜잭션은 두 개의 UPDATE 문으로 구성되어 있다. 성호의 계좌에서 5,000원을 인출하려면 계좌번호가 100번인 성호의 잔액에서 5,000원을 감소시키는 UPDATE 문이 필요하고, 은경이의 계좌로 5,000원을 입금하려면 계좌번호가 200번인 은경이의 잔액을 5,000원 증가시키는 UPDATE 문이 필요하다. 두 UPDATE 문을 처리하는 순서는 중요하지 않지만 둘 다 모두 정상적으로 실행되어야 한다.

    만약 첫 번째 UPDATE 문이 실행된 후 시스템에 장애가 발생하여 두 번째 UPDATE 문이 실행되지 않으면, 성호가 5,000원을 이체했으나 은경이가 이를 받지 못해 5,000원이 사라지는 모순된 상황이 발생한다. 이러한 모순된 상황이 발생하지 않도록 하려면 시스템이 정상적으로 작동하게 되었을 때 두 번째 UPDATE 문을 실행하여 트랜잭션의 모든 UPDATE 문이 정상적으로 실행되도록 하거나, 첫 번째 UPDATE 문의 실행을 취소하여 데이터베이스를 트랜잭션 작업 전의 원래 상태로 되돌아가도록 해야 한다.

    [네이버 지식백과] 트랜잭션의 개념 (데이터베이스 개론, 2013. 6. 30., 김연희)


    트랜잭션의 특징

    트랜잭션의 특징은 크게 4가지로 구분된다. 

     

    • 원자성 (Atomicity)
    • 일관성 (Consistency)
    • 독립성 (Isolation)
    • 지속성 (Durability)

    A: Atomicity

    하나의 트랜잭션 내 모든 연산이 모두 정상적으로 실행되거나, 아무것도 실행되지 않아야 한다는 것을 의미합니다.

    (All 또는 Noting)

     

    C: Consistency

    트랜잭션이 성공적으로 완료된 후에도 데이터베이스는 항상 일관성 있는 상태여야 한다는 것을 의미합니다.

    I: Isolation

    현재 데이터베이스에 접근중인 트랜잭션이 완료될 때까지 다른 트랜잭션이 접근할 수 없다는 것을 의미합니다.

    D: Durability

    일단 완료된 트랜잭션은 데이터베이스에 반영되었으므로, 어떠한 경우에도 이 내용이 손실되지 않고 영구적이어야 된다는 것을 의미합니다.

     


    Commit, Rollback 연산

    Commit이란 하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성있는 상태에 있을 때, 하나의 트랜잭션이 끝났다라는 것을 알려주기위해 사용하는 연산이다.

    이 연산을 사용하면 수행했던 트랜잭션이 로그에 저장되며, 후에 Rollback 연산을 수행했었던 트랜잭션단위로 하는것을 도와준다.

    Rollback이란 하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진경우, 트랜잭션을 처음부터 다시 시작하거나, 트랜잭션의 부분적으로만 연산된 결과를 다시 취소시킨다.

    후에 사용자가 트랜잭션 처리된 단위대로 Rollback을 진행할 수도 있다.

    728x90

    '기본적인 cs 지식' 카테고리의 다른 글

    브라우저에서 구글을 검색했을때 일어나는 과정  (0) 2022.10.03
    RESTful API란?  (0) 2022.10.03
    TCP/IP 개념 및 차이점  (0) 2022.10.03
    HTTP,HTTPS 개념 및 차이점  (0) 2022.10.03

    댓글

Designed by Tistory.