본문 바로가기
관리자

Programming-[Backend]/Database

트랜잭션이란 1. 기본 개념

728x90
반응형

1. 개념

트랜잭션은 데이터베이스(Database, DB)에서 일어나는 작업의 최소 단위를 말한다.

 

만약 A가 B에게 10,000원을 이체한다면 DB에 있는 A의 계좌정보에서 10,000원을 빼줘야 하고, B의 계좌정보에는 10,000원을 더해주어야 한다. 이 과정을 차례대로 나누어 생각해보자.

 

1. A의 계좌 잔액을 확인한다.

2. A의 계좌에서 10,000원을 제한다.

3. B의 계좌 잔액을 확인한다.

4. B의 계좌에 10,000원을 더한다.

 

위 과정 중에 네트워크 또는 프로그램상의 문제가 발생하면, 예를 들어 2까지만 진행되고 3에서 에러가 나버린채로 DB에 정보가 반영된다면 문제가될 것이다. 따라서 4가지 과정을 한 가지의 최소 단위의 작업으로 묶어서 처리할 필요가 있는데, 이것이 트랜잭션의 개념이다.

 

보통 문제가 발생할 것을 대비해서 작업의 내용은 임시 메모리인 버퍼(buffer)에서 작업 후에 작업이 완료되면 DB에 반영하고 저장한다. 작업 내용을 DB에 반영하는 것을 커밋(commit)이라고 한다.

 

그리고 작업 수행의 최소 단위인 트랜잭션을 기초로, DBMS(DataBase Management System)의 성능을 초당 트랜잭션의 수(TPS, Transaction per Second)로 표현한다.


2. 조건

ACID 조건 이라고 간단히 부른다.

 

1. Atomicity(원자성)

트랜잭션은 최소 단위로 유지되어 DB에 반영되어야 한다는 개념이다. 위 1.개념에서 설명한 바와 같이, 트랜잭션이 4단계의 과정으로 이루어진 최소의 단위로써 존재하기 때문에, 마치 물질을 이루는 최소단위인 원자가 더 이상 쪼개어질 수 없듯이, 트랜잭션도 더 쪼개어질 수 없는 최소단위가 있다는 개념의 조건이다. '트랜잭션은 끝까지 반영되거나 전혀 반영되지 않아야 한다' 라는 조건이고, 간단히는 All or Nothing 이라고 표현한다.

 

긴 작업을 해야한다면 버퍼에서 DB로 중간 커밋을 진행한다. 중간 커밋을 한 후 남은 작업을 버퍼에서 처리하다가 에러가 나면 트랜잭션을 중단하고 중간 커밋 내용도 원래대로 되돌려놓아야 한다. 만약 중간 커밋 내용만 반영한다면 원자성의 원칙에 위배되기 때문이다.

 

2. Consistency(일관성)

 DB에 반영된 트랜잭션 결과나 특성이 갑자기 바뀌면 안된다는 것을 의미한다. 예를 들어서 DB의 어떤 필드에 날짜 데이터가 기록되어야 하는데, 트랜잭션 결과 이후 날짜가 문자열 데이터로 바뀌게 된다면 일관성의 원칙을 지키지 못한 것이 된다.

 

3. Isolated(독립성)

 격리성이라고도 하며, 하나의 트랜잭션이 일어나는 도중에 다른 트랜잭션이 끼어들지 못하도록 하는 규칙이다. A가 B에게 10,000원을 이체하는 도중에 B가 A에게 5,000원을 이체하더라도, 서로의 트랜잭션이 상호 영향을 주지 않고 독립적으로 취급되어 따로 작동해야하는 성질을 말한다.

 

4. Durability(지속성)

트랜잭션이 일어난 후에는 장애가 발생하더라도 트랜잭션을 성공적으로 완료한 결과가 DB에 반영된 이후에 지속적으로 DB에 남아있어야 한다는 원칙이다. 따라서 시스템 체크 등을 하더라도 DB에 반영된 결과는 변함없이 지속적으로 유지되어야 한다. 그리고, 보통 트랜잭션은 로그에 모든 것을 저장한 이후에야 commit된 상태로 간주하므로, 시스템 장애 발생 전 상태로 되돌릴 수 있다.

 

 


3. 참조


1. Youtube 이감TV - 트랜잭션과 장애(기술)

www.youtube.com/watch?v=qDzCH_jS0Mg

 

 

728x90
반응형