Database & Data/기초지식

트랜잭션 소개 - 8

동석해요 2023. 5. 13. 08:56
728x90
SMALL

트랜잭션이란?

데이터베이스에서 한 번에 수행되어야 할 일련의 연산을 의미

 

1)  네 가지 특성(ACID 속성)


- 원자성(Atomicity)
트랜잭션에 포함된 연산들은 모두 성공하거나, 아니면 하나도 수행되지 않아야 한다.
즉, 트랜잭션 내의 연산들은 분할될 수 없는 최소의 단위로 처리되어야 한다.

- 일관성(Consistency)
트랜잭션이 성공적으로 완료되면 데이터베이스는 일관성 있는 상태를 유지해야 한다.
예를 들어, 무결성 제약 조건을 만족하는 등의 데이터베이스의 일관성이 보장되어야 한다.

- 독립성(Isolation)
한 트랜잭션이 수행되는 동안 다른 트랜잭션은 그 연산을 볼 수 없다.
즉, 각 트랜잭션은 서로 독립적으로 수행되어야 한다.

- 영속성(Durability)
트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 반영되어야 한다.
시스템에 문제가 생기더라도, 한번 완료된 트랜잭션의 결과는 보존되어야 한다.

※ Atomic

- DDL이나 DML 중 레코드를 수정/추가/삭제한 것에만 의미가 있다.

- SELECT에는 트랜잭션을 사용할 이유가 없다.

 

2) 예시 코드(은행 간 거래)

 은행 계좌 간의 이체를 다룬다면, 계좌 A에서 계좌 B로 $100 이체하는 트랜잭션은 다음과 같이 SQL로 표현될 것이다.

START TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE account_id = 'A';

UPDATE accounts SET balance = balance + 100 WHERE account_id = 'B';

COMMIT;

위의 SQL 코드에서 START TRANSACTION;은 트랜잭션의 시작이다.
이후 두 개의 UPDATE 문은 각각 계좌 A에서 $100을 빼고, 계좌 B에 $100을 더하는 연산을 수행한다.
마지막으로 COMMIT;은 트랜잭션을 완료하고 데이터베이스에 변경 사항을 영구적으로 반영한다.

이 트랜잭션의 중요한 특징은, 두 개의 UPDATE 문이 모두 성공해야만 COMMIT이 실행되고 그렇지 않으면 ROLLBACK이 실행된다.
ROLLBACK은 트랜잭션 내의 모든 연산을 취소하고 데이터베이스를 트랜잭션 시작 전 상태로 되돌린다.
이를 통해 위에서 설명한 원자성(Atomicity)이 보장된다.
728x90
SMALL