트랜잭션(Transaction)의 개념
- 데이터베이스의 논리적인 작업 단위
- 여러 개의 SQL 문들을 하나의 논리적 작업으로 묶어서 실행하며, 이 작업이 모두 성공적으로 수행된 경우에만 변경된 데이터를 영구적으로 저장하고, 그렇지 않은 경우에는 모든 변경을 취소
- 데이터베이스의 일관성과 무결성을 유지하기 위한 중요한 개념 중 하나
- 트랜잭션을 관리하기 위해서는 ACID 원칙이라는 4가지 특징이 매우 중요
트랜잭션의 특징 4가지 - ACID 원칙
원자성 (Atomicity)
- All or Nothing
- 트랜잭션 내에서 수행한 작업들이 모두 성공하거나 모두 실패하는 원칙
- 트랜잭션 내의 모든 작업은 하나의 단위로 처리되기 때문에 중간에 오류가 발생할 경우 모든 작업이 취소 됨
Ex) 은행 계좌에서 100원을 인출하고 다른 계좌에 100원을 송금할 경우 두 작업 중 하나라도 실패하게 되면 두 작업 모두 롤백되어 전혀 변화가 없던 것처럼 처리
일관성 (Consistency)
- 트랜잭션 시작 전과 끝난 후의 데이터는 모두 데이터베이스의 무결성 제약을 만족
- 트랜잭션이 데이터베이스 내에 정의된 규칙을 위반하는 작업을 시도하면 DBMS는 해당 작업을 실패시키고 롤백하여 데이터베이스의 일관성을 유지
Ex) 은행 계좌의 잔액이 항상 0 이상이여야 한다는 제약이 있을 때, 트랜잭션 처리 후에도 이 제약을 어기지 않도록 보장
독립성 (Isolation)
- 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 하나의 트랜잭션이 다른 트랜잭션의 연산에 영향을 미치지 않도록 보장
- 즉, 동시에 실행되는 트랜잭션들은 서로에게 영향을 주지 않고 독립적으로 실행되는 원칙
- 트랜잭션 간에 중간 결과를 다른 트랜잭션이 볼 수 없게 하며, 격리 수준에 따라 다르게 설정 가능
- Read Uncommitted : 다른 트랜잭션의 미완료 결과를 볼 수 있음
- Read Committed : 다른 트랜잭션의 커밋된 결과만 볼 수 있음
- Repeatable Read : 트랜잭션 시작 이후에는 같은 값을 반복적으로 읽을 수 있음
- Serializable : 트랜잭션들이 직렬화된 것처럼 처리
영구성 (Durability)
- 트랜잭션이 성공적으로 완료되었을 경우 결과는 영구적으로 저장되어 시스템에 장애가 발생하더라도 이미 커밋된 트랜잭션은 반영된 상태로 유지
- 트랜잭션이 HDD, SSD 등의 비휘발성 저장장치에 영구적으로 저장되는 것을 의미
- 데이터베이스 시스템은 COMMIT 후에 데이터의 변경 사항을 실제로 저장하고 이를 로그 파일 등으로 기록하여 복구를 지원
Ex) 트랜잭션 완료 후 서버가 종료되거나 장애가 발생해도 데이터는 손실되지 않고 복구
트랜잭션 처리 흐름
- 트랜잭션이 시작되면 데이터베이스는 작업을 기록하고 변경된 데이터를 임시 저장소에 보관
- 트랜잭션이 끝나면 commit 명령어를 통해 변경사항이 데이터베이스에 영구적으로 반영
- 만약 오류가 발생하면 rollback 명령어를 통해 변경된 데이터가 취소되고 트랜잭션 이전 상태로 되돌아 감
'Computer Science' 카테고리의 다른 글
[Cloud Service] 클라우드 서비스의 개념 (3) | 2024.12.15 |
---|---|
[Software Engineering] CBD 방법론 (1) | 2024.12.03 |
[Network] RESTful API vs Socket 통신 차이 (2) | 2024.11.18 |
[Software Architecture] REST API과 RESTful API (0) | 2024.11.18 |
[OOP] SOLID 원칙 (0) | 2024.11.13 |