CS/데이터베이스

[DB] 데이터베이스 트랜잭션이란?

이영재의오른발 2023. 8. 28. 00:01
반응형

그동안 대충 알고있던 트랜잭션 개념에 대해 자세히 알아보겠습니다.

 

공부하기 이전 막연하게 트랜잭션은 여러가지 일들을 하나의 일처럼 생각해서 데이터베이스에 한번에 커밋하는것 이라고 생각했습니다.

 

뭔가 틀린말은 아니지만 그렇다고 맞는말도 아닌것 같네요.

 

좀 더 예쁜말로 트랜잭션을 정의하려면 트랜잭션의 성질에 대해 알아봐야하기 때문에 트랜잭션의 대표적인 성질 ACID 에 대해 먼저 알아보겠습니다.

 

 

ACID 란 트랜잭션의 안정성을 보장하기 위한 네가지 성질 atomicity, consistency, isolation, durability 을 의미합니. 

 

1. atomicity (원자성)

한 트랜잭션의 연산들이 모두 성공하거나, 모두 실패되는 성질. 

 

2. consistency (일관성)

한 트랜잭션의 이전과 이후 데이터베이스의 상태가 유효해야한다. 여기서 유효하다는 말은 데이터베이스의 제약조건을 모두 지킨다는 뜻이다.

 

3. isolation (격리성)

모든 트랜잭션은 다른 트랜잭션으로부터 격리되어야한다.

 

 

격리성에 대해 이해하기가 어려웠기때문에 예시를 들겠습니다.

 

** 격리성을 지키지 못하는 상황 **

<현재 상황> 

A의 계좌 : 400,000

B의 계좌 : 600,000

 

A는 B의 계좌에 200,000 원을 입금하려하고 B는 자신의 계좌에 300,000 을 입금하려함

 

만약 이 상황에서 A 계좌에서 200,000 만원을 출금한 상태에서 B 계좌에 300,000 만원이 입금되면 B 계좌의 상태는 900,000 원이 됩니다. 하지만 A 계좌에서 출금한 시점에 B의 계좌는 800,000 이 돼야하므로 결과적으로 B 계좌는 110,000이 아닌 800,000 이 돼버립니다.

 

이런 상황이 발생하지 않게 하기 위해서 트랜잭션이 동시에 실행될 때와 연속적으로 실행될 때의 데이터베이스 상태를 동일하게 만들어야 합니다.

 

4. durability (지속성)

commit 된 트랜잭션은 DB에 영구적으로 저장된다.

영구적으로 저장한다 할때는 일반적으로 비 휘발성 메모리 (SSD, HDD) 에 저장함을 의미한다.

결국 DB 시스템에 문제가 생기더라도 commit 된 트랜잭션은 DB에 남아있다.

 

 

트랜잭션이란 데이터베이스의 위의 네가지 성질을 지키며 데이터베이스의 상태를 변화시키기 위해 하나 이상의 쿼리를 모아놓은 하나의 작업단위를 뜻합니다.

728x90
반응형