본문 바로가기
Database

트랜잭션

by Doromi 2019. 4. 25.
728x90
반응형

트랜잭션(Transaction)이란,

 

질의(query)를 하나의 묶음 처리해서 만약 중간에 실행이 
중단되면 처음부터 다시 실행하는 Rollback을 수행하고,
오류없이 실행을 마치면 Commit을 하는 실행 단위

한 번 질의가 실행되면 질의가 모두 수행되거나
모두 수행되지 않는 작업수행의 논리적 단위이다.

예를 들어, 친구에게 인터넷 뱅킹으로 만원을 송금한다.
나의 계좌에서 만원을 줄이고, 친구의 계좌에 만원을 증가시켜야 한다.
오류로 인하여 나의 계좌에서는 만원이 줄었는데, 친구의 계좌에서는 증가되지 않으명 어떻게 될까?

이러한 경우가 생기지 않게 하기 위해 중간에 오류가 발생하면 다시 처음부터 송금하도록

하는 것이 바로 Rollback 이다.
즉 송금 과정 전체를 하나의 트랜잭션이라고 볼 수 있다.


 


 

 

 

트랜잭션의 4가지 특성

ACID 특성

 

 

  1. 원자성 (Atomicity)
    트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장
    즉 All or Nothing의 개념으로서, 부분만 실행되지 않는다는 것을 의미한다.

  2. 일관성(Consistency)
    트랜잭션이 성공적으로 완료되면 일관적인 DB상태를 유지하는 것
    일관성이란 송금 예제에서 금액의 데이터 타입이 정수형이면 정수형을 유지하는 것을 말한다.
    즉 송금 전, 후 모두 금액의 데이터 타입은 정수형이여야 한다는 것
    혹은, 2번 송금했는데 상대방에는 입금이 안되었거나, 1번만 입금이 되는 등의 데이터 불일치가 생겨선 안 된다.
  3. 격리성(Isolation)
    트랜잭션 수행시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장하는 것
    즉, 트랜잭션끼리는 서로를 간섭할 수 없다.

  4. 지속성(Durability)
    성공적으로 수행된 트랜잭션은 영원히 반영이 된다.
    Commit을 하면 현재 상태는 영원히 보장된다.

 


 

트랜잭션을 사용하며 주의해야 할 점??

트랜잭션은 데이터 완전성을 보장하기 위해 많은 자원들을 사용하게 된다.
자원을 사용하며 Lock을 걸게 되면 다른 사용자들은 Lock이 해제될 때까지 기다려야 한다.

기다린다는 것은 성능에 좋지 않다는 의미이다.
따라서 Transaction의 범위를 최소화하여 적용하는 것이 좋다.

 

728x90
반응형

'Database' 카테고리의 다른 글

SQL 데이터 조작문  (0) 2019.04.19
테이블의 제거와 변경  (0) 2019.04.17
SQL  (0) 2019.04.17
관계 대수의 확장  (0) 2019.04.16
순수 관계 연산자(조인,디비전)  (0) 2019.04.16