트랜잭션(Transaction)
✒️ 2025-05-28 16:00 내용 수정
수제비 2024 정보처리기사 필기 5판 1권의 내용 일부를 참고하여 정리
데이터베이스의 작업을 처리하는 논리적 연산 단위 혹은 DBMS이나 유사 시스템에서 상호작용의 단위
- 참고 자료 : 위키백과 트랜잭션
- 더 이상 분리될 수 없는 최소 단위이며, SQL의 모든 명령어들은 각각 하나의 트랜잭션으로 볼 수 있다.
- 트랜잭션은 작업 방법에 따라 하나의 SQL 명령문일 수도, 여러 개의 SQL 명령문의 묶음일 수도 있다.
START TRANSACTION; -- 트랜잭션 시작, 수동 COMMIT으로 변경됨
트랜잭션의 특성(ACID)
| 특성 | 설명 |
|---|---|
| 원자성 (Atomicity) | 트랜잭션의 결과는 데이터베이스에 모두 반영되거나 반영되지 않은 상태만 가질 수 있다. 데이터베이스의 연산들은 하나로 묶여 더 이상 나누거나 줄일 수 없는 단위로 취급된다. |
| Commit/Rollback(TCL(Transaction Control Language)), 회복성 보장 기법과 연관됨 | |
| 일관성 (Consistency) | 트랜잭션은 시작부터 종료까지 같은 형태의 데이터베이스를 참조한다. 트랜잭션이 제약 조건, CASCADE, TRIGGERS를 포함한 정의된 모든 조건에 맞게 데이터 값이 변경된다. 트랜잭션 진행 동안 데이터베이스가 변경되더라도 이전에 사용한 데이터베이스를 참조한다. |
| 무결성 제약조건, 병행 제어 기법(Concurrency Control)과 연관됨 | |
| 독립성 (Isolation) | 특정 DBMS에 다수의 유저들로 인해 트랜잭션이 두 개이상 실행될 때 트랜잭션끼리 서로 영향을 주지 못한다. 하나의 트랜잭션은 다른 트랜잭션의 결과를 참조할 수 없다. 수행 중인 트랜잭션이 완료될 때까지 다른 트랜잭션의 요청을 막아 데이터의 꼬임을 방지한다. |
| 고립화 수준 기법과 연관됨 | |
| 영구성 (Durability) | 트랜잭션의 실행이 성공적으로 완료(Commit)되었을 때 그 결과는 데이터베이스에 영구적으로 반영된다. |
| 회복 기법과 연관됨 |
트랜잭션의 상태 변화
| 상태 | 설명 |
|---|---|
| 활동 | 초기 상태로, 트랜잭션 실행 중의 상태 |
| 부분 완료 | 마지막 명령문이 실행된 후의 상태 |
| 완료 | 트랜잭션이 성공적으로 완료된 후의 상태 |
| 실패 | 정상적인 실행이 더 이상 진행될 수 없을 때 상태 |
| 철회 | 트랜잭션이 취소되고 DB가 트랜잭션 시작 전 상태로 환원된 상태 |