[db] Trasaction

Mar 13, 2019


Transaction 이란?


흔히 작업의 한 단위라고 한다.
웹 사이트를 개발한다고 할 때, 사용되는 데이터 베이스(DB)에 변화를 가하는 SQL 문을 사용하는 작업을 말한다.

DB에 변화를 주는 SQL 을 DML(Data Manipulating Language) 라고하며, 우리가 잘 아는 ‘SELECT’, ‘INSERT’, ‘UPDATE’, ‘DELETE’ 가 있다.

작업의 단위는 이런 DML 명령문 한 줄을 의미하는 것이 아니다.

개발자가 짠 로직에서의 한 단위를 의미한다. 게시판에 글을 올린다고 할때, ‘게시’ 라는 버튼을 누르면 목록 화면으로 넘어간다고 하자. 버튼을 누른 후 ‘INSERT’ 명령어가 실행되고, 목록 화면에 보여질 목록을 ‘SELECT’ 하는 작업이 이어질 것이다. 이 논리적 흐름의 단계를 한 단위로 본다.

Transaction 의 특징


  • 원자성(Automicity) : 작업이 모두 반영되던지 모두 반영이 안되던지.
  • 일관성(Consistency) : 작업 결과의 일관성 있는 데이터를 리턴 혹은 반영.
  • 독립성(Isolation) : 두 개의 작업이 서로 영향을 미치지 않도록 함.
  • 지속성(Durability) : 성공한 작업은 영구적으로 반영.

원자성
작업이 진행되다가, 에러가 날 결우, 작업을 전체 취소하던지, 작업된 부분까지만 반영을 할 건지 정한다.

일관성
트랜잭션이 진행되는 동안 DB에 변경이 일어난다 해도, 미리 참조된 DB에 대한 작업을 리턴해야 한다.

독립성
둘 이상의 트랜잭션이 발생했을 때, 서로 영향을 미치면 안된다. 서로 영향을 미치는 작업이라면, 하나의 작업이 완료될 때까지 기다린 후, 참조하도록 한다.

지속성
트랜잭션 작업이 성공할 경우 DB에 영구적으로 반영되어야 한다.