728x90
반응형
트랜잭션(Transaction)
트랜잭션의 개념
데이터베이스의 상태를 변환시키는 하나의 논리적 작업 단위를 구성하는 연산들의 집합
상태를 변화시킨다는건? → SQL을 통해 DB에 접근하는 것
트랜잭션으로 일어나는 예시와 필요한 상황 예시
※ 트랜잭션이 적용된 상황
사용자가 게시물을 등록한다. (INSERT → SELECT)
(등록으로 INSERT 문이 실행되고, 리스트에 추가된 모습을 보여주기 위해 다시 SELECT문 진행)
※ 트랜잭션이 필요한 상황
은행에서 A가 B에게 송금하려고 할때 송금 버튼을 누른 후 돈이 빠져나가고, B에게 돈이 들어가기 전에 전산 장애가 발생해서 B가 돈을 받지 못한 경우
Commit과 Rollback이 뭔지 설명하시오
- commit : 트랜잭션 하나의 작업이 성공적으로 끝나 데이터베이스가 다시 일관된 상태에 있을 때, 갱신 연산이 완료된 것을 관리자에게 알려주는 연산
- rollback : 트랜잭션 처리가 비정상 종료되어 데이터베이스의 일관성이 깨졌을 때, 트랜잭션 일부가 정상 처리되었더라도 원자성 구현을 위해 모든 연산을 취소하는 것
트랜잭션의 4가지 특징을 필요한 상황에 예를 들며 설명하시오
원자성(Atomicity) : 트랜잭션의 모든 연산들은 정상적으로 수행 완료되거나 전혀 어떤 연산도 수행되지 않은 상태를 보장해야 함
전산 장애가 발생해서 돈을 받지 못했다면, 송금한 작업도 전부 취소시켜야 함. 이처럼 트랜잭션 연산은 모두 하나의 작업으로 처리되어야 하는 원자성을 가짐
일관성(Consistency) : 트랜잭션 완료 후에도 데이터베이스가 일관된 상태로 유지되야함
B가 돈을 성공적으로 받았을 때만 데이터베이스에 반영되어야 함. 두 계좌의 잔고 합은 이체 전후가 같아야하는 일관성이 필요
독립성(Isolation) : 하나의 트랜잭션이 실행하는 도중에 변경한 데이터는, 이 트랜잭션 완료까지 다른 트랜잭션이 참조하지 못함
B가 현재 잔액을 확인하는 트랜잭션 중에 A의 송금 트랜잭션이 현재 계좌 잔액을 바꾸는 간섭을 발생시키지 않는다.
동시에 여러 트랜잭션이 발생했을 경우, 각각 트랜잭션은 다른 트랜잭션에서 변경되고 있는 자료들에 대해 참조하거나 간섭할 수 없어야 함
지속성(Durability) : 성공적으로 수행한 트랜잭션은 영원히 반영되야함
A의 현금이 인출되는 과정에 변경되는 잔액은 간섭받아 손상되면 안됨. 트랜잭션 성공하면 로그로 남아서 언제든지 돌리는 것이 가능해짐
728x90
반응형