반응형
트랜잭션 특징
- 데이터베이스의 데이터 무결성이 보장되는 상태에서 DML 작업을 완수하기 위한 기본 작업 단위
- 트랜잭션을 통해 비정상 종료 및 실패에 대해 데이터 신뢰성과 일관성 보장
이론적 일반 상황에서는 "DML 실행과 실행에 대한 커밋/롤백 단계" 까지를 트랜잭션이라고 한다.
필드에서는 "SELECT 문으로 데이터를 조회하고 DML을 실행하여 종료하는 과정"까지 라고 한다.
ACID 란?
개념 | 내용 |
원자성(Atomicity) | 트랜잭션의 처리가 완전히 끝나지 않았을 경우에는 전혀 이루어지지 않은 것과 같아야 한다. |
일관성(Consistency) | 트랜잭션의 실행이 성공적으로 완료되면 DB는 모순 없이 일관성이 보존된 상태여야 한다 |
고립성(Isolation) | 어떤 트랜잭션도 다른 트랜잭션의 부분적 실행 결과를 볼수 없다. |
지속성(Durability) | 트랜잭션이 성공하면 트랜잭션의 결과를 영구적으로 보장해야한다. |
간단한 예시
- 원자성 : 이체 금액이 10만원이면 10만원이 완전히 이체되거나 안되거나 라는 뜻이다. 5만원만 되거나 9만원만 되는 것이 아니다. (Rollback 사용)
- 일관성 : Alice 계좌에서 10만원이 출금되었으면 Bob 계좌에는 10만원이 입금 되어야한다.
- 고립성 : Alice 계좌에서 이체가 실행되는 것에 대해서 Bob 사용자는 관여할수 없다. Alice의 이체 실행이 완료되지 않으면 Bob은 이체 관련하여 처리할수 없다.(조회는 가능)
- 보존성 : 이체가 끝나면 저장되고 보존해야한다 / 장애가 발생했을때 복구 하기 위해서이다.
트랜잭션 수행 단계
상태 | 설명 |
활성화 | 트랜잭션을 실행 상태 |
부분완료 | DML 등 트랜잭션 명령을 실행한 후 의 상태 |
완료 | 트랜잭션 성공적으로 완료 |
실패 | 더 이상 정상적으로 실행 불가 |
철회 | 이전 트랜잭션을 복원하여 트랜잭션 수행 이전 상태로 돌아감 |
Update의 예시를 들어보자
나의 휴대폰 정보를 iphone13 에서 iphone14로 수정하려고한다.
- Update 명령어를 실행해서 트랜잭션 시작
- iphone14로 변경은 되었으나 DB에 영구적으로 반영은 안됨 / 다른 사용자가 조회하면 여전히 iphone13으로 표시
- 정확하게 갱신되었다면 Commit을 하고 정상적으로 DB에 영구적으로 반영
- 만약 UPDATE 명령이 실행이 실패 된다면 롤백되어 철회된다.
커밋 이전 과 이후 비교
이전
- 데이터 변경 이전의 상태로 복구가 가능하다
- 현재 사용자만 DML 작업의 결과를 확인할 수 있으며 다른 사용자는 확인할 수 없다.
- 변경 중인 행은 접근 제어되어 다른 사용자가 변경이 불가하다.
이후
- 데이터베이스에 데이터를 영구적으로 변경, 적용되어 기존 데이터는 상실한다.
- 모든 사용자가 결과를 확인 할 수 있다.
- 접근 제어가 해지되어 다른 사용자가 변경 할수 있다.
반응형
'DataBase(DB)' 카테고리의 다른 글
[DB] Database Project - 5 / PHP 연동 및 플랫폼 구현 (0) | 2024.03.06 |
---|---|
[DB] 동시성 제어(Concurrency Control), 직렬화(Serialization) (0) | 2023.11.30 |
[DB] Database Project - 4 / SQL Developer 설치 및 Oracle DB 구축 (1) | 2023.11.28 |
[DB] Database Project - 3 오라클 데이터베이스 Entity Relationship Diagram 설계 (0) | 2023.11.28 |
[DB] Database Project - 2 주제 선정 (1) | 2023.11.28 |