• 트랜잭션
    • 데이터베이스에서 동작을 수행하는 최소 단위 이다.

    • WHY?

      • 하나의 동작을 수행하기 위해 여러 쿼리문이 수행될 수 있다. 이 때, 모든 동작이 종료되기 전에 어떠한 이유로 쿼리가 비정상적으로 종료되면 문제가 발생하게 된다. 예를 들어, A(1000원 보유) 에서 B(1000원 보유)로 500원을 송금하는 동작을 수행 할 때,

        • A-500
        • B+500

        와 같이 두 번의 쿼리가 발생한다. 만약,

        • A-500
        • B+500 (실패)

        와 같이 중간에 종료되게 되면 A(500원 보유) B(1000원 보유)로 데이터 정합성에 문제가 발생하게 된다. 이러한 현상을 방지하기 위해 위와 같은 여러 번의 쿼리를 하나의 동작으로 묶어 트랜잭션 도중 오류로 인해 종료되게 되면 트랜잭션 내부의 모든 쿼리가 실패처리 된다.

    • ACID (트랜잭션의 특징)

      • 원자성(Atomicity) : 트랜잭션의 부분적인 성공 없이 실패, 성공 단 두가지 결과만을 갖는다.
      • 일관성(Consistency) : 트랜잭션이 수행되더라도 데이터베이스는 일관된 상태(스키마에 위배되지 않는)를 유지한다.
      • 독립성(Isolation) : 트랜잭션이 수행되는 도중 다른 트랜잭션이 연산 중인 데이터에 접근할 수 없다.
      • 지속성(Durability) : 트랜잭션의 종작이 성공적으로 수행되면 반드시 해당 트랜잭션에 대한 로그가 데이터베이스에 남겨져야 한다. 만약, 동작이 모두 성공하더라도 로그가 저장되지 않고 비정상적으로 종료되게 되면 해당 트랜잭션은 실패한 것으로 간주한다.
    • 트랜잭션은 데이터베이스에서 데이터에 대한 동작을 수행할때 데이터 정합성을 보장하기 위해 사용된다. 간단히, 어떤 동작(서비스)을 수행하기 위한 여러 쿼리문을 하나의 오퍼레이션으로 취급하는 것 이다.