트랜잭션(transaction)
- 트랜잭션이란 데이터베이스의 상태를 변화(SELECT, INSERT, UPDATE, DELETE 등과 같은 조작어)시키기 위해 수행하는 일련의 연산들의 집합으로 하나의 논리적 작업 단위
- 한 계좌에서 10만원을 다른 계좌로 10만원을 보내는 경우, (계좌에서 10만원 인출 -> 다른 계좌로 10만원을 입금)이 하나의 트랜잭션
- 만약에 10만원 인출은 성공했지만, 입금하는 과정에서 실패한 경우 아무 것도 실행되지 않은 처음 상태로 되돌려져야 함
트랜잭션(transaction)의 연산
- 커밋(Commit): 트랜잭션의 모든 연산이 정상적으로 완료되면, 그 결과를 한꺼번에 데이터베이스에 반영
- 롤백(Rollback): 트랜잭션을 수행하는 도중 일부 연산에 오류가 발생한 경우, 데이터베이스를 트랜잭션 수행 전으로 되돌림
트랜잭션(transaction) 사용 이유
- 트랜잭션을 통해 데이터베이스의 안전성을 확보
- 데이터베이스에서는 데이터를 읽어 온 후 트랜잭션을 수행하는 오류가 발생하면 해당 트랜잭션을 실행하기 전으로 Rollback 되고, 트랜잭션의 모든 연산이 성공적으로 수행되었을 경우에만 Commit
트랜잭션(transaction)의 특징 (ACID)
Atomicity (원자성)
- 트랜잭션의 모든 연산이 데이터베이스에 모두 반영되거나, 혹은 전혀 반영되지 않아야함
- 완료되지 않은 트랜잭션의 중간 상태를 데이터베이스에 반영되면 안됨
Consistenty (일관성)
- 트랜잭션의 작업 처리 결과는 항상 일관성이 있어야함
- 트랜잭션을 진행 중에 DB가 변경되어도 처음에 참조한 DB로 트랜잭션을 수행
- 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 수행 후의 상태가 같아야 하며, DB의 제약조건을 위배하는 작업을 트랜잭션 과정에서 수행할 수 없음
- ex) 송금 시 금액의 데이터 타입을 정수형(integer)에서 문자열(string)로 변경할 수 없음
Isolation (독립성)
- 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 트랜잭션도 다른 트랜잭션의 연산에 끼어들 수 없음
Durability (지속성)
- 트랜잭션이 성공하면, 결과는 영구적으로 반영
트랜잭션 상태
- 활성(Active): 트랜잭션이 실행 중
- 부분 완료(Partially Committed): 트랜잭션이 모두 실행되고 commit 연산을 실행하기 이전 상태
- 실패(Failed): 트랜잭션 실행을 실패
- 완료(Committed): Commit 연산을 실행한 뒤 트랜잭션이 정상적으로 완료
- 철회(Aborted): 트랜잭션 실행을 실패하여 Rollback 연산을 수행
참고:
[MYSQL] 📚 트랜잭션(Transaction) 개념 & 사용 💯 완벽 정리
트랜잭션(Transaction) 이란? 트랜잭션(Transaction)의 사전적 의미는 거래이고, 컴퓨터 과학 분야에서의 트랜잭션(Transaction)은 "더이상 분할이 불가능한 업무처리의 단위"를 의미한다. 이것은 하나의
inpa.tistory.com
[Database] 트랜잭션 정리
트랜잭션 총 정리
velog.io
[DB] 트랜잭션(transaction)이란?
서론 Spring을 사용하여 개발하다 보면 service 단에서 @transaction 처리를 해줍니다. 항상 사용하면서 대충 느낌적으로 트랜잭션이 뭔지는 알겠으나 정확하게 입 밖으로 정리돼서 나오지가 않아 이번
dkswnkk.tistory.com
'CS > Database' 카테고리의 다른 글
[Database] JOIN 알고리즘 종류 (0) | 2024.09.13 |
---|---|
[Database] 테이블 JOIN 종류 (0) | 2024.09.13 |
[Database] Index (0) | 2024.09.13 |
[Database] 데이터 모델의 이해 (1) (0) | 2024.05.09 |
[Database] Database 기본 용어 (1) | 2024.04.28 |