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