본문 바로가기
  • soobinhand의 기술 블로그
Computer Science/데이터베이스

[데이터베이스] 트랜잭션, Transaction

by soobinhand 2022. 1. 27.
728x90

트랜잭션은 영어로 transaction이다. 

그럼 transaction의 뜻은 뭘까?

그냥 영단어 사전엔 "거래" 라고 나와있다.

나는 이걸 어느정도 받아들이며 트랜잭션에 대해 공부하려 한다.

물론 컴퓨터에서 말하는 트랜잭션이 거래와 동일한 뜻은 아니다. 하지만 비슷하다고 생각한다.

"거래"와 연관지어 공부해보겠다.

 

정의

트랜잭션은 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위이다.

데이터베이스를 변경시키는 것은 INSERT, UPDATE, DELETE, SELECT 등이 있다.

하나의 트랜잭션은 Commit or Rollback이 되어야만 한다. 

 

Commit or Rollback

아까 말한 거래와 연관지어 보자.

엄마한테 용돈을 10만원만 달라했다.

엄마는 아들이 불쌍하여 보내주셨다.

근데 송금하는 중에 알 수 없는 오류가 있었는지 아들에게 돈이 가지 않았다.

엄마 계좌에선 10만원이 없어졌는데, 아들 계좌엔 10만원이 들어오지 않았다.

이러한 문제들이 발생한 것이다.

그래서 Commit과 Rollback이란 개념이 생겨났다.

거래가 성공적으로 모두 끝난 후에야 이를 완전한 거래로 승인(Commit)하고, 거래 도중 오류가 발생했을 때는 이 거래를 아예 없었던 거래로 되돌리는 것(Rollback)이다.

이렇게 거래의 안전성을 확보하는 방법이 바로 트랜잭션이다.

 

특징

ACID

트랜잭션에는 4가지 특징이 존재한다.

Atomicity (원자성)

트랜잭션이 DB에 모두 반영되거나, 전혀 반영되지 않거나 를 뜻한다.

ALL or NOTHING 이다.

위의 예시 참고.

Consistency (일관성)

트랜잭션이 무슨 작업을 하면 작업 처리의 결과가 항상 일관되어야 한다는 것이다.

엄마가 아들에게 10만원을 주면 계좌엔 -10만원, 아들은 +10만원이 되어야 한다.

엄마는 -10만원인데 아들은 +11만원이면 안되는 것이다.

Isolation (고립성)

하나의 트랜잭션이 다른 트랜잭션에 끼어들 수 없고 마찬가지로 독립적임을 의미한다.

서로 간섭이 불가능하다.

엄마가 아들에게 10만원을 송금하는데 아빠도 가세한다. 근데 만약 고립성이 없다면 송금이 동시에 된다면 무슨 일이 일어날까? 분명히 오류가 날 수 있다. 꼭 거래는 한 번에 하나씩만 하자.

Durability (지속성)

트랜잭션이 성공적으로 완료되면 영구적으로 결과에 반영되어야 한다.

아들 계좌에 10만원이 들어왔다. 근데 내일 봤는데 돈이 만원이 없어져있으면 안될 듯하다.

그래서 이러한 기록은 로그로 남고 시스템 장애 발생 전으로 되돌릴 수 있다.

728x90

댓글