트랜잭션
여러 읽기/쓰기를 논리적으로 하나로 묶는 것
업무 처리를 위한 논리적인 작업 단위
반영은 commit, 반영하지 않을려면 rollback
ACID(atomicity, consistency, isolation, durability : 원자성, 일관성, 고립성, 지속성)
데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어
원자성(Atomicity)
트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력
자금 이체는 성공할 수도 실패할 수도 있지만 보내는 쪽에서 돈을 빼 오는 작업만 성공하고 받는 쪽에 돈을 넣는 작업을 실패해서는 안된다.
일관성(Consistency)
트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미
무결성 제약이 모든 계좌는 잔고가 있어야 한다면 이를 위반하는 트랜잭션은 중단된다.
독립성(Isolation)
트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미
트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미
지속성(Durability)
성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미
시스템 문제, DB 일관성 체크 등을 하더라도 유지되어야 함을 의미
트랜잭션이 없다면 위 그림의 insert 단계에서 문제가 발생했을 때 update도 다시 원래대로 복구시켜야 한다.
트랜잭션이 있으면 rollback을 하면된다.
트랜잭션 범위
커넥션 기준으로 한다.
트랜잭션 전파
여러 메서드 호출이 한 트랜잭션에 묶이도록 하기 위해 필요
외부 연동(API 등등)이 섞여 있으면 롤백 처리에 주의 필요
참고
사이트 : https://youtu.be/urpF7jwVNWs
사이트 : https://ko.wikipedia.org/wiki/ACID
도서 : SQL 전문가 가이드 - 한국 데이터 진흥원
'프로그래밍 > DB' 카테고리의 다른 글
관계 (0) | 2021.09.15 |
---|---|
DDL과 DML, DCL, TCL (0) | 2021.09.14 |
인덱스(Index) (0) | 2021.09.14 |
정규화(Normalization)와 반정규화(De-Normalization) (0) | 2021.09.09 |
트랜잭션 이해 2 - 격리, 단계, 수준 (0) | 2021.09.07 |