[Database] 트랜젝션과 ACID

Hyebin·2021년 8월 24일
0

DB

목록 보기
1/4
post-thumbnail

트랜젝션(Transaction)

여러개의 작업들을 하나의 실행 유닛으로 묶은 것이다.

트랜젝션은 성공과 실패 두 가지의 결과만 존재한다.
만약 하나의 작업이 실패하면 트랜젝션도 실패이고, 모든 작업이 성공해야 트랜젝션이 성공한 것이다.

트랜젝션의 필요성

코딩씨가 A은행에서 돈을 출금해서 B은행으로 송금한다 가정해보자.
만약 A은행에서 출금한 돈이 B은행으로 송금되는 과정에서 시스템이 멈춰버렸다면 출금은 됐지만 송금은 되지 않고 돈은 날아가버린다.

이런 상황을 막기위해서는 트랜젝션을 통해 데이터의 유효성을 보장해야한다.

ACID

트랜젝션의 데이터 유효성을 보장하기 위한 4가지 특징

1) 원자성(Atomicity)

  • 하나의 트랜잭션이 전부 성공하거나 전부 실패해야 된다. 부분적으로 실행이 되면 안되는 성질

위 예시처럼 계좌이체를 할 때 출금과 송금 둘 중에 하나라도 실패한다면 계좌이체 또한 실패이다.

2) 일관성(Consistency)

  • 하나의 트랜잭션 이후 데이터베이스 상태는 이전과 같이 유효해야 한다.

계좌이체 성공 이 후 데이터 타입이 number에서 string으로 바뀌지 않는 것을 말한다. 계좌이체 전 후 모두 number형이여야 한다는 특징

3) 고립성(Isolation)

  • 하나의 트랜잭션이 다른 트랜잭션과 독립되어야 한다.

동시에 실행될 때와 연속으로 실행될 때의 데이터베이스 상태가 동일해야 한다.

4) 지속성(Durability)

  • 트랜잭션이 성공적으로 수행되었다면 해당 트랜잭션에 대한 로그가 남고 런타임 오류나 시스템 오류가 발생해도 해당 기록은 영구적이어야 한다.

게좌이체를 성공적으로 한 뒤에 해당 은행 데이터베이스에 오류가 발생해 종료되어도 계좌이체 내역은 남아야 한다.

0개의 댓글