Database
[DB] Transaction 트랜잭션
dalgorithm
2022. 10. 10. 11:38
728x90
트랜잭션(Transaction)이란?
트랜잭션이란 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용하는 단위이다.
즉, 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위이다.
💡 데이터베이스의 상태 변화
질의어(SQL)를 이용하여 데이터베이스에 접근하는 것
ex) SELECT, INSERT, DELETE, UPDATE 등
트랜잭션 특징
ACID는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 트랜잭션의 특징을 말한다.
- 원자성(Atomicity)
- All or Nothing
- 트랜잭션이 DB에 모두 반영되거나, 혹은 전혀 반영되지 않아야 된다.
- 일관성(Consistency)
- 트랜잭션의 작업 처리 결과는 항상 일관성 있어야 한다.
- 독립성(Isolation)
- 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없다.
- 지속성(Durability)
- 트랜잭션이 성공적으로 완료되었으면, 결과는 영구적으로 반영되어야 한다.
트랜잭션 명령어
| Commit
- 모든 부분작업이 정상적으로 완료하면 이 변경사항을 한꺼번에 DB에 반영한다.
- DB가 일관성있는 상태일 때 이를 알려주기 위해 사용하는 연산
| Rollback
- 부분 작업이 실패하면 트랜잭션 실행 전으로 되돌린다.
- 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스 일관성을 깨뜨렸을 때 트랜잭션의 일부가 정상적으로
처리되었더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행한 모든 연산을 취소하는 연산
| Savepoint
- 일반적으로 ROLLBACK을 명시하면 INSERT, DELETE, UPDATE 등의 작업 전체가 취소되지만, SAVEPOINT를 사용하면 전체가 아닌 특정 부분에서 트랜잭션을 취소시킬 수 있다.
트랜잭션 연산과정
단계 | 설명 |
활성(Active) | 트랜잭션이 정상적으로 실행중인 상태 |
실패(Failed) | 트랜잭션 실행에 오류가 발생하여 중단된 상태 |
철회(Aborted) | 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태 |
부분 완료(Partially Committed) | 트랜잭션의마지막 연산까지 실행했지만, Commit 연산이 실행되기 직전의 상태 |
완료(Committed) | 트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태 |
참고
| https://gyoogle.dev/blog/computer-science/data-base/Transaction.html
728x90