-
[DB] 데이터베이스 트랜잭션이란?CS/데이터베이스 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반응형'CS > 데이터베이스' 카테고리의 다른 글
mysql 기본문법 자주 까먹는 것들 정리 (0) 2023.01.17