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
'Database & Data > 기초지식' 카테고리의 다른 글
개념적, 논리적, 물리적 모델(이해 위주) (0) | 2023.05.26 |
---|---|
데이터 조직에 대해 (0) | 2023.05.22 |
고급 SQL 다루기 (0) | 2023.05.12 |
Join 소개 (0) | 2023.05.11 |
GROUP BY와 CTAS - 4 (0) | 2023.05.10 |